正在解决 git 被我们删除的 rebase

Resolving git rebase deleted by Us

我有一个文件 a.java 我已经修改了。

与此同时,在我将更改推送到 master 之前,另一位开发人员删除了该文件(基本上重命名了包)。

现在,当我重新调整我的更改时,我看到了

Unmerged paths:
   deletedbyus: a.java

现在因为我想保留更改,所以我做了 ..我尝试 git 添加 a.java 但它似乎不起作用我仍然看到

Unmerged path:
 deltedbyus: a.java

如果我执行 git rm 或 rm,文件将被暂存,但它会显示为已删除,从而将文件全部删除。

在我的更改完好无损的情况下恢复文件的正确方法应该是什么。

假设你在 master 分支上,并且其他人将 a.java 文件的 包更改 推送到 master,你是现在在提交更改后在 master 分支上执行 git rebase,让我们澄清一下它的确切含义:

在这种情况下,git 正在将 master 分支的 HEAD 重置为远程 origin/master 分支之一。然后 git 将每个实际 你的 提交并在新主人的 HEAD 之上重写它们。

实际上它们是 你的 提交,正在被重写,但从 git 的角度来看,它们是 它们 因为它们属于 git 分支,所以在你当前分支的基础上重新定位(这实际上不是你的更改,但它现在是 我们的 分支,因此 我们的改变).

在这种情况下,当 git 告诉您 deletedbyus 时,这意味着在提交中 git 正在重写,文件再次存在 ,因为它已经在我们的分支(被我们)删除了,但是我(git)应该如何处理一个没有不再存在? 有人故意删除了它,我 (git) 无法在未经确认的情况下再次创建该文件(确实是正确的)。

那么,您应该如何解决这种情况?实际上你应该在文件现在所在的位置包括你的更改(他们的从git的角度来看在变基期间)存在(在新包上,假设你想保持包的变化)。一旦你完成了这个,你应该做

# Manually carry the changes you made to 
# file/on/old/package/a.java 
# to file/moved/to/new/package/a.java

git add file/moved/to/new/package/a.java # To confirm your changes
git rm file/on/old/package/a.java # To confirm deletion
git rebase --continue # To continue with your rebase

但是,您对该文件进行了哪些更改?你可以用git diff HEAD:file/moved/to/new/package/a.java file/on/old/package/a.java

看到它