Git分支在删除已移动的文件后发生分歧

Git分支在删除已移动的文件后发生分歧,git,rebase,Git,Rebase,主存储库中的一个文件已被移动到子文件夹中,在本地服务器上,我删除了该文件,并打算在将来签入到新位置时将其添加到其中 在签入提交并执行git pull--rebase origin master时,我遇到了一个冲突,指出该文件已在我的提交中删除,并在另一个提交中重命名/移动,因此合并失败 然后我做了一个git-rebase--abort 现在,当我执行git状态时,我会收到以下消息: 你的分支和起源/主分支已经分开,分别有1次和27次提交 如何修复此问题?从一开始就再次启动git-rebase操作

主存储库中的一个文件已被移动到子文件夹中,在本地服务器上,我删除了该文件,并打算在将来签入到新位置时将其添加到其中

在签入提交并执行
git pull--rebase origin master
时,我遇到了一个冲突,指出该文件已在我的提交中删除,并在另一个提交中重命名/移动,因此合并失败

然后我做了一个git-rebase--abort

现在,当我执行git状态时,我会收到以下消息:

你的分支和起源/主分支已经分开,分别有1次和27次提交


如何修复此问题?

从一开始就再次启动
git-rebase
操作

当您点击有冲突的步骤时(您删除了,其他人移动了), 您需要决定如何解决冲突,最好是在与进行迁移的其他开发人员讨论之后

如果应删除该文件,请删除它:

git rm path/to/renamed/file
如果文件应保留,则添加它:

git add path/to/renamed/file
path/to/rename/file
是由
git status
给出的冲突路径

删除或添加后,使用以下方法继续重设基础:

git rebase --continue
请注意,如果您决定
git添加
冲突文件, 然后,当您执行git rebase时--继续, 它可能会告诉你:

事实上,该文件已由另一分支机构添加, 使用您的
git add
您刚刚确认要保留该操作, 没有添加任何新内容。
在这种情况下,继续使用
git-rebase--skip

重新基在一开始,提交图可能如下所示:

你做出了改变,结果是:

然后,你想做一个再基础拉。首先,
origin/master
已更新:

如果重新基线拉取成功,则预期图形如下所示:

但是,由于冲突,它失败了,您中止了它,因此它又变成了这样:

master
origin/master
C
之后发散。如果您现在想避免冲突,可以运行
git reset HEAD^--hard
,这使得图形如下所示:

然后通过
git merge@{u}
git merge origin/master
使用
origin/master
更新
master

现在,您可以像最初一样删除文件并提交更改。最终的图表如下所示:


你可以忽略
D
,它现在从
master
的git日志中消失,尽管它将在repo中存在很长一段时间。

我已经完成了git,将文件添加到新位置,git状态以绿色显示所有内容,但不包括列表中的新文件,这是否意味着文件被包括在内,旧文件将被删除?旧文件在两个分支中都被删除,因此保持删除状态。如果执行git add,将添加新文件(位于新位置的文件)。顺便说一句,当您执行git rebase--continue时,它可能会告诉您“无事可做”,因为实际上,添加的提交已经添加了该文件,您只是确认在解决冲突时,没有真正的更改要做。在这种情况下,请执行git-rebase--skip
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.