如何回滚之前的两次提交?

问题描述 投票:0回答:3

考虑这个场景:

  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

git github reset
3个回答
165
投票

应该回到第 n+1 次提交。您可能也有一个合并提交。你也可以做一个

git reset --hard <sha1_of_where_you_want_to_be>

警告!!

--hard
表示您当前拥有的任何未提交的更改 将被永久丢弃。


30
投票

我建议使用这样的东西:

git reset --soft <commit_hash>

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

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

所以,如果你像我一样不幸,试试这个! :

git revert <commit_hash>


0
投票

建议使用 --soft 来恢复您仍想保留的更改并使用以下命令。

git reset --soft HEAD~2
© www.soinside.com 2019 - 2024. All rights reserved.