我如何撤销最近提交并保留更改



我已经有几个提交,我需要撤销最近的一个,但有我在它的地方所做的更改。请告诉我怎么做。谢谢你。

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的提交消息)

保存更改,退出编辑器。你完成了。

最新更新