2016-08-30 170 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 

經檢查,頭部(全部)似乎有原承諾解決衝突以及後續更改。