2016-08-30 165 views
0

我刚刚解决了一个大的合并冲突,同时rebasing。命令的顺序是:Git - 解决了rebase冲突,然后继续工作 - 如何保存工作?

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 rebase origin/develop 

[冲突

[分支HEAD干净的工作目录]显示,包括本地删除/远程修改的文件]

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实际上做。

回答

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 

经检查,头部(全部)似乎有原承诺解决冲突以及后续更改。