提交我試圖撤消在中間提交,同時保持以下的人不變。我認爲這可能是不可能的,找到這些帖子:Post 1 & Post 2。 (最終目標可能會重複,但我確實沒有工作,我對此表示歉意。)使用'混帳rebase`除去中間
不幸的是,我仍然堅持如何正確使用git rebase -i
。我創建了一個樣本回購如下:
commit cc2576365a9716bb9f96e195e599190d3c70fba0
Author: zzy
Date: Sun Jul 17 14:30:53 2016 -0400
commit #3
commit 11d9f8fdc69be8b4530e4b70c9661b4e34287afe
Author: zzy
Date: Sun Jul 17 14:30:36 2016 -0400
commit #2
commit 4770e08eb54d0d582bd4b391f2361a328b417cdf
Author: zzy
Date: Sun Jul 17 14:29:58 2016 -0400
commit #1
,每次提交增加了在一個叫a
文件的新線(見下文a
的內容):
提交後#1
1
提交後#2
1
2
提交後#3
1
2
3
現在我打算移除提交#2,和a
應該是這樣的:
1
3
我試着命令git rebase -i 11d9f8fdc69be8^
並獲得文本文件:
pick 11d9f8f commit #2
pick cc25763 commit #3
我刪除了第一行,只保留了提交#3並退出了文件。但我得到以下錯誤:
error: could not apply cc25763... commit #3
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
Could not apply cc2576365a9716bb9f96e195e599190d3c70fba0... commit #3
和文件a
變爲:
1
<<<<<<< HEAD
=======
2
3
>>>>>>> cc25763... commit #3
我很困惑,爲什麼2還在這裏,爲什麼有衝突。任何人都可以幫助我獲得預期的結果嗎?提前致謝!
您在提交時引入的更改彼此太接近。它們不重疊,但爲了確保沒有丟失,'Git'和任何其他'diff'程序在diff中至少包含兩行上下文(前一個和後一個)。從這個角度來看,您提交引入的更改重疊,這就是發生衝突的原因。再次嘗試使用更大的文件,並注意將更改分開幾行,並按預期工作。 – axiac
除了[什麼axiac提到](http://stackoverflow.com/questions/38468446/use-git-rebase-to-remove-a-commit-in-the-middle#comment64341138_38468446),你可能想設置合併.conflictstyle'設爲'diff3',這樣Git就會向你展示不僅僅是兩個不同的版本,而且也是通用的基礎部分。這對於這個特別簡單的例子並不是很有用,但總的來說,我發現使用'diff3'模式集讀取合併衝突更容易。 – torek
@axiac謝謝soooooooo多!!!!是的,我改變了一個更大的例子,使用完全相同的命令,它的工作原理! – zzy