2016-11-02 85 views
2

我有一些本地提交,並且在主服務器上進行了更改。所以我做了一個:撤銷已經推送並重做合併的git合併

git pull // it automatically merged and had a conflict with one file only. 
subl <file> // Made the wrong fix and saved it 
git commit // It opened nano and I Typed "fixed merge" saved it 
git push master origin 

我該如何回到拉和重做合併和推?特別是在合併之前回到正確的位置。

+0

的可能的複製[如何恢復已經推送到遠程分支的合併提交?](http://stackoverflow.com/questions/7099833/how-to-revert-a-merge-commit-thats-already-pushed-to-remote-branch) – 1615903

+0

關於undoin有更詳細的說明g在這裏合併:[撤銷合併](https://git-scm.com/blog/2010/03/02/undoing-merges.html) – 108

回答

4

您可以還原與合併:

git revert -m 1 (Commit id of the merge commit) 

更多信息可以在Official GUIDE

使用git reflog <branch>找出可以找到你可以在其他的方式做到這一點在您的分支是在合併之前,並且git reset --hard <commit_id>恢復舊版本(您將回到此提交)。那麼只要你可以push它回來。

Reflog會顯示分支的較舊狀態,因此您可以將其返回到您喜歡的任何更改。

確保你是在正確的分支

+0

所以,當我這樣做,然後做一個拉我會得到同樣的衝突我有過之前?而且我看到,我在錯誤的合併中所做的努力仍然是主人? – IskandarG

+0

這讓Git錯誤地認爲合併的提交仍然在目標分支上。 –

0

可以恢復到上次提交:

git revert HEAD 

它會恢復你的承諾作爲一個新的提交