2011-01-21 66 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意味着您目前有任何未提交的更改 将被永久抛弃。