Git - 解决了rebase冲突然后继续工作 - 如何保存工作?

时间:2016-08-30 20:53:01

标签: git

我刚刚在重新定位时解决了一个大的合并冲突。命令序列是:

git rebase origin/develop
git mergetool

一旦所有冲突得到解决,我通常会跑:

git rebase --continue

......但我忘记了。

然后,我对工作目录进行了一系列更改,认为我正常从一个干净的工作目录开始(好像rebase已经完成)。

为了让事情更加混乱,我偶然调用了我为将工作目录更改传输到虚拟机而设置的脚本。在主机(我工作的地方)上应用的命令是:

git add -A
git commit -m 'temp'
git format-patch HEAD~
git reset HEAD~1

所以整个序列是这样的:

[在HEAD上干净工作目录]

git rebase origin/develop

[显示冲突,包括本地删除/远程修改的文件]

git mergetool

[冲突已解决但 git rebase --continue]

[对工作目录的更多更改,包括添加和删除文件]

git add -A
git commit -m 'temp'
git format-patch HEAD~
git reset HEAD~1

有没有办法从此回来?我想保持冲突解决方案和随后的工作目录更改。我特别感兴趣的是Git所处的状态,冲突何时解决但你还没有运行git rebase --continue;以及git rebase --continue实际上做了什么。

1 个答案:

答案 0 :(得分:0)

似乎解决这种情况实际上非常简单。在git mergetool之后,我有了整个原始HEAD提交,加上冲突解决方案,在暂存区域等待。我认为此时git rebase --continue只会以与git commit相同的方式提交它们。

相反,我做了一些更改,然后运行脚本:

git add -A # add more changes to the staging area
git commit -m 'temp' # do a regular commit instead of continuing the rebase
# at this point the HEAD (temp) contains all the changes I want
git format-patch HEAD~ # irrelevant, no effect
git reset HEAD~1 # all changes in working directory

之后我跑了:

git add -A
git commit -m all

经过检查,HEAD(全部)似乎已经解决了冲突的原始提交,以及随后的更改。