如何回滚前两次提交?

Mar*_*tuc 67 git github reset

考虑这种情况:

  1. 开发人员A做了提交:#n
  2. 开发.B确实提交了#n + 1
  3. 开发.A确实提交了#n + 2
  4. 并提交#n + 3

然后发现他在#n + 2的提交中引入了一个缺陷.

如何开发.回滚他的最后2次提交并继续开发提交#n + 1

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

Ada*_*ruk 101

它应该回到n + 1提交.你可能也有合并提交.你也可以做一个git reset --hard <sha1_of_where_you_want_to_be>

警告!!--hard表示您当前拥有的任何未提交的更改将永久丢弃.

  • 警告!!`--hard`表示您当前拥有的任何未提交的更改将永久丢弃.要回滚到先前的提交而不丢弃你的工作,请使用`--soft`. (19认同)
  • 我从`git log`获得了我想要的sha1,但是还需要`git push -f`,因此修改将反映在github上. (11认同)
  • 请解释使用--hard代替--soft (4认同)
  • 如何获得远程提交的sha1(不是我自己完成的)?我尝试使用`git reflog`,但是我只能访问我的本地reflog信息,例如,提交#n,#n + 2,#n + 3 ...但不能访问#n + 1 (2认同)

Nic*_*vas 30

我建议使用这样的东西:

git reset --soft <commit_hash>
Run Code Online (Sandbox Code Playgroud)

除非您希望它删除到目前为止的所有更改,否则在这种情况下使用 --hard 而不是 --soft,它将让您到达树中所需的位置,而不会丢弃提交中所做的所有更改。

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

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