我已經合併了一個開發分支(與常量,有時不穩定的變化)到我們的主分支(我們存儲發佈,穩定的代碼)。我想將master分支恢復到之前的狀態,比如與dev分支的合併從未發生過(並且在將來我們合併開發分支時,我們現在將放棄的所有更改將再次合併)。還原推送分支到具體提交
這是主分支的當前狀態,我希望它在HEAD處具有'professional-1.1.2'提交/標記。
我想:
$ git revert -n professional-1.1.2..HEAD
fatal: Commit 9167e846a387c793edbc089c7ab6bd9eb8260456 is a merge but no -m option was given.
$ git revert -n -m 1 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
$ git revert -n -m 2 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
了一些研究之後,我認爲,更好的選擇是做一個git reset --hard professional-1.1.2
和git push --force
的答案Git: How to ignore fast forward and revert origin [branch] to earlier commit?或reverting push'd git commit。其他開發人員在同一個辦公室,他們不應該承諾任何東西來掌握(因爲我不應該,但是...是的,我們沒有每個分支的權限),所以這不是一個大問題告訴他們,做任何事情需要採取的行動。
所以最終的問題是:git revert something
或git reset --hard <TAG>
& & git push --force
?如果git revert
,我應該使用哪個命令行?
在http://stackoverflow.com/questions/3556501/git-how由Jefromi給出的答案合併後重置可能對您有所幫助。 – vpatil 2012-04-26 09:58:33
@vpatil在我的情況下,最好使用'git reset --hard'而不是'git revert'? – 2012-04-26 10:08:20
是的,我認爲是因爲revert創建一個新的提交,取消上次提交。我肯定會建議使用重置。 – vpatil 2012-04-26 10:39:46