2013-05-12 156 views
0

我在Rails應用程序的一個分支上工作,承諾並將它合併到我的主人中,因爲我對所有事情都很滿意,但是現在我想再次取出該分支並放棄這些更改。如何從主分支(Github)中取出合併分支?

現在有可能還是太晚了,我已經把分支和主人合併了?

感謝

+0

我推送合併到Github以及。不只是在本地?將git重置 - hard commit_sha仍然工作? – 2013-05-12 19:56:44

回答

1

將提交推送到中央位置後,最好不要以任何方式修改它們。

另一種方法是生成反向提交。也就是說,一次提交可以解除之前提交中的所有更改。一種方法是git-revert。假設你已經在提交<sha2><sha3><sha4>合併,你可以:

git revert <sha4> 
git revert <sha3> 
git revert <sha2> 

如果你想恢復在一個單一的所有更改承諾,請嘗試--no-commit選項:

git revert --no-commit <sha4> 
git revert --no-commit <sha3> 
git revert --no-commit <sha2> 
git commit -m "Undid feature merge" 

生成單個反向提交的另一種方法是git checkout

git checkout -f <sha2> 
git commit -a -m "Undid feature merge" 
+0

如果我使用Git恢復作者,它會進入VIM模式,我不知道如何使用。我怎樣才能跳過VIM。分支名稱是作者。這是最後一個承諾的分支,並已被合併並推送到Github。謝謝! – 2013-05-13 09:31:44

+1

VIM彈出以允許您設置提交消息。 [見這裏](http://git-scm.com/book/en/Customizing-Git-Git-Configuration)瞭解如何讓git使用不同的編輯器。 – Andomar 2013-05-13 10:58:05

1

你可以做一個git reset。如果只是最近的本地合併,這很好。

如果你已經在某處推入了合併,或者你有更多的提交,那麼這不是個好主意。相反,你必須接受你的合併,並做一個乾淨的git revert。這樣歷史記錄仍然包含合併,但回覆將撤銷合併的效果。