如何回滚前两次提交?

时间:2011-01-21 19:22:27

标签: git github reset

考虑这种情况:

  1. 开发人员A执行提交: #n
  2. 开发。 B确实提交了 #n + 1
  3. 开发。 A确实提交 #n + 2
  4. 并提交 #n + 3
  5. 然后发现他在提交#n + 2时引入了一个缺陷。

    怎么可以开发。回滚他的最后2次提交并继续开发提交 #n + 1

    尝试了git reset --hard HEAD~2 *,但它又回到了开发者A的提交 #n

2 个答案:

答案 0 :(得分:93)

它应该回到n + 1提交。你可能也有合并提交。您还可以执行git reset --hard <sha1_of_where_you_want_to_be>

  

警告! --hard表示您当前拥有的任何未提交的更改   将被永久地扔掉。

答案 1 :(得分:4)

我建议使用这样的东西:

git reset --soft <commit_hash>

除非您希望它删除到那时为止的所有更改,否则在这种情况下使用 --hard 而不是 --soft,它将使您到达树中所需的点,而不会删除在其中所做的所有更改提交。

在阅读时,我尝试使用 --HARD,但不幸的是,它删除了我到目前为止的所有更改。因此,请注意是否要删除它们。

所以,如果你像我一样倒霉,试试这个! :git revert <commit_hash>