我已经有几个提交,我需要撤消最新的提交,但要对其进行更改。请告知如何做到这一点。谢谢。
答案 0 :(得分:8)
git reset --soft HEAD^
请注意,如果尚未按下HEAD,则应该只回放HEAD。
修改回复您对原始问题的评论:
如果您只想编辑最近的提交,Git有一个简洁的功能commit --amend
。只需使用git add
/ git rm
/ git checkout
,直到您的索引处于您希望的状态(添加了新的更改,删除了一些更改,删除了文件,......)。然后使用git commit --amend
,它会弹出vi(或你在core.editor
中配置的任何内容)和上次提交的提交消息,供你编辑。
注意,当我说>编辑最近的提交<时,Git实际上会创建一个新的提交。因此,当提交已经从其他人(即推送到您的公共存储库)中提取时,请不要这样做
答案 1 :(得分:3)
如果您想更新最新的提交,那么修改此提交就可以完成这项工作:
<do the changes you want to>
git add <missing files>
git add <changed files>
git commit --amend
就是这样。
如果您需要更改评论并将其他文件添加到之前的提交,我建议您改为interactive rebase。
<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' - 压缩SHA1和SHA3并丢弃SHA3的提交消息)
保存更改,退出编辑器。你完成了。
对于你已经向上游推送的提交,永远不应该这样做。