我已经有几个提交,我需要撤销最近的一个,但有我在它的地方所做的更改。请告诉我怎么做。谢谢你。
git reset --soft HEAD^
注意,只有当HEAD还没有被推送时,你才应该倒回HEAD。
编辑回复您对原始问题的评论:
如果你只想编辑最近的提交,Git有一个简洁的特性commit --amend
。简单地使用git add
/git rm
/git checkout
,直到您的索引处于您想要的状态(添加新的更改,丢弃一些更改,删除文件,…)。然后使用git commit --amend
,它会弹出vi(或者你在core.editor
中配置的任何东西),显示你上次提交的提交消息,供你编辑。
注意,当我说"编辑最近的提交"时,Git实际上创建了一个新的提交。所以不要这样做,当提交已经从其他人拉(即推到您的公共存储库)
如果你想更新最近的提交,那么修改这个提交将完成这项工作:
<do the changes you want to>
git add <missing files>
git add <changed files>
git commit --amend
。
如果您需要更改注释并在之前的提交中添加一些其他文件,我建议您执行交互式重base。
<do the changes you want to>
git add <missing files>
git commit -a
git rebase -i HEAD~3
在弹出的编辑器中你会看到类似
的内容pick <SHA1> Commit that you wanted to change
pick <SHA2> Next commit that you seem to try to rollback in your question
pick <SHA3> Just committed fixes to SHA1
改为
pick <SHA1> Commit that you wanted to change
f <SHA3> Just committed fixes to SHA1
pick <SHA2> Next commit that you seem to try to rollback in your question
('f'表示'fixup' - squash SHA1和SHA3,并丢弃SHA3的提交消息)
保存更改,退出编辑器。你完成了。