git等价于hg rollback

Nic*_*kiy 21 git

如何在不删除任何更改的情况下"回滚"git中的最后一次提交?

这是我在hg中经常做的事情:

  • 提交"固定107".
  • 记得我忘了做某事
  • hg rollback
  • 什么
  • 提交"固定107".

chm*_*lig 19

使用git,您可能更愿意--amend在这种情况下使用该选项.

  • 提交"固定107".
  • 记得我忘了做某事
  • 做一点事
  • git commit --amend 并编辑笔记

如果您因其他原因需要回滚,请查看 git revert

  • `revert`是一种只处理其他几个原因的方法.如果有问题的提交已经发布,那么确实使用`git revert`.如果它没有被推送,并且它是最近的提交,请使用`git reset [--hard] HEAD ^`.如果它没有被推送,并且它不是最近的提交,请使用`git rebase -i`将其从历史记录中删除,其余部分保持不变. (7认同)
  • 当心git noobs(和我一样).我做了"git reset HEAD ^",它不仅从历史记录中删除了我的提交,还将提交的文件恢复到之前的提交状态. (3认同)

iac*_*opo 18

试试这个:

git reset --soft HEAD^
Run Code Online (Sandbox Code Playgroud)

我发现它与'hg rollback'相同,因为:

  • 最后一次提交取消
  • 保留了变化
  • 以前提交的文件已暂存

你也可以rollback像这样创建一个git别名:

git config --global alias.rollback 'reset --soft HEAD^'
Run Code Online (Sandbox Code Playgroud)

因此,您现在只需键入git rollback以获得与Mercurial完全相同的命令即可.