2011-01-21 87 views
45

考慮這種情況:如何回滾前兩次提交?

  1. 開發人員A沒有提交:#N
  2. 開發。 B確實承諾#n + 1
  3. Dev。 A不提交#N + 2
  4. ,並承諾#N + 3

,然後發現他犯#N + 2他介紹了一個缺陷。

如何開發。回滾他最後2次提交併繼續開發承諾#n + 1

嘗試過git reset --hard HEAD~2*,但是它回到了開發者A的承諾#n

+0

git reset HEAD〜2應該重置爲#n + 1提交,如果您在此時已經提交了B提交。你拉他們了嗎? – Snowbear 2011-01-21 20:04:24

+0

...不在#n + 2提交之前。它是:[0] B推`commit`#n + 1,[1]`commit`ted#n + 2,[2]不成功`push`,[3]`pull`,[4]`push` 。所以現在在github上有一個提交(#n + 2)和一個合併分支'master'(#n + 3)。 – 2011-01-21 20:23:33

回答

76

它應該回到n + 1提交。您可能也有合併提交。你也可以做一個git reset --hard <sha1_of_where_you_want_to_be>

警告! --hard意味着您目前有任何未提交的更改 將被永久拋棄。