2014-07-11 92 views
2

我做了兩個提交而不推動它們。有多個其他提交被推送到我的分支。我還沒有拉那些提交。我想銷燬我的兩個未被推送的提交,然後只是獲取其他人提交的其他多個提交。有人可以幫我弄這個嗎?如何撤消尚未推送的提交?

我想扭轉兩個提交,一個接一個。但我想保留其他更改。這會工作嗎?

+0

您希望保留哪些其他更改?他們是否做出改變? – Eran

+0

我沒有任何變化。我想保留其他人推動的變化,這發生在我提交了我的東西(沒有推送)之後發生的 – KKendall

+1

複製[恢復到以前的Git提交](http://stackoverflow.com/questions/4114095/revert-to- a-previous-git-commit) –

回答

8

如果您有兩次未提交的提交,而您完全不需要提交,那麼您應該重置爲要從頭開始提交然後進行提交。

所以,我假設你有以下情況。

$ git log --oneline --graph 
* fde0ba4 Commit 2 (don't want) 
* d7be6f3 Commit 1 (don't want) 
* 7a70e45 Before my new commits (start here!) 
* db58591 Even earlier 
... 

等等。你不想要前兩個提交,但你想要第三個提交。第一步是重置回你想從哪裏開始。

git reset --hard 7a70e45 

注意,這是一個破壞性操作 - 你會失去這些提交,這些提交的內容,所以請小心這樣做!如果您不確定--hard是否合適,請參閱the git reset documentation

重置後,您應該能夠沒有問題地拉動。

git pull 
+0

知道有一種方法可以做到這一點。唯一能改善你的答案的是鏈接到[git reset --hard命令的文檔](http://git-scm.com/docs/git-reset)。 – Bobulous

+0

添加了鏈接,感謝您的建議! – tbekolay