既然您注意到您之前已有git reverted
我認爲您與合併與還原之間的交互發生衝突。 git revert
通過創建一個新的提交來完成撤消恢復的提交。比如說你有以下的樹。
A -- master
| B -- work_branch
| |
|/
M -- Merge work_branch to master.
|
C -- New commit on master.
|
M' -- git revert M (undoes B)
在這種情況下,你合併work_branch
爲master
,然後提交新的東西master
對合並的頂部,然後再決定你work_branch
沒有準備好master
呢。你現在有幾個選擇來解決這個問題。
git reset --hard
回犯A
,然後git cherry-pick C
回master
。
git rebase -i
回A和刪提交M
git revert M
它創建提交M'
前兩個選項基本上相當於他們只是有不同的工作流程。最後一個選項讓你既M
並在歷史上新的提交M'
其中M'
包含正好撤消一切創造M
在合併過程中帶來的變化。
的問題,當你決定work_branch
現在已經準備好,並要進行合併發生。當你做合併你不會得到work_branch
發生在M
和M'
發生的任何變化。爲了恢復變更,您必須刪除提交M'
對您的歷史記錄的影響。你有幾個選項,他們基本上是相同的,但現在你試圖刪除M'
。
最簡單的事情很可能是恢復恢復提交。所以git revert M'
再次合併work_branch
之前。這也將在重新編號work_branch
後生效,但它可能會導致以前不會得到的衝突。這會得到你喜歡的東西:
A -- master
| B -- work_branch
| |
| /|
M | -- Merge work_branch to master.
| |
C | -- New commit on master.
| |
M' D -- git revert M (undoes B)
|/
F -- git merge work_branch (You see changes from D, but not B)
|
M'' -- git revert M' (undoes M', you now see changes from B)
來源
2014-01-09 15:48:33
asm
你在主內的任何東西上運行'git revert'?例如,你有意/無意地將'work_branch'合併爲'master',然後'git revert'合併? – asm
@AndrewMyers是的,我意外地合併和恢復了。 – fredley