2016-12-06 64 views
1

如果我有以下日誌歷史記錄:如何撤消多個提交

d46a977 Commit 3 
750bcaa Commit 2 
a49d225 Commit 1 

而且我想恢復到提交1,失去了取得了提交2和3,提交修改應如何是做什麼?

我一直在閱讀一些教程,比如這https://www.atlassian.com/git/tutorials/undoing-changes/git-checkout

但是,從我能想出還原可以用來最後一次提交,並復位可以用來撤銷了一些。但在教程中,我沒有看到任何使用重置的例子,其中指定了實際的提交版本(即重置爲49d225)。因此,我很困惑它是如何重新設置的。

回答

1
git reset --hard a49d225 

將重置您的本地存儲庫提交a49d225並拒絕所有進一步的更改。請參閱manual for git-reset

但是,如果您已將更改推送到遠程,則不應該這樣做。在這種情況下,我只需檢查該提交併在那裏創建一個新分支。

git checkout a49d225 
git checkout -b feature/new-branch 

如果它不是一個特性分支,只有你工作,而是由整個團隊(如masterdevelop分支整個項目)共享的東西,最好的選擇似乎是明確的回覆兩個承諾你不再需要。

git revert d46a977 
git revert 750bcaa 

這將創建兩個新的提交與增量抵消原提交2提交3。在歷史中將會顯示這些更改已引入,然後顯式回滾。而且,這樣您可以避免更改歷史記錄,以便您的團隊能夠安全地進行推拉。

只要這些不是合併提交,這應該是非常好的。這些可能需要額外的關注。

0

您可以使用底墊中,重訂當前分支的提交1. (創建一個從提交1,然後衍合主枝到這個新創建的分支的一個分支)。