我已经做出了承诺,但现在很难看到我都改变了什么。我当然可以做一个 git diff,但我宁愿撤消最后一次提交并保持我的所有更改都完好无损,以便我的 IDE (PyCharm) 简单地向我显示哪些文件已更改。
那么有没有办法撤消最后一次提交(真正删除它)但仍然保持我的更改完好无损?欢迎所有提示!
我已经做出了承诺,但现在很难看到我都改变了什么。我当然可以做一个 git diff,但我宁愿撤消最后一次提交并保持我的所有更改都完好无损,以便我的 IDE (PyCharm) 简单地向我显示哪些文件已更改。
那么有没有办法撤消最后一次提交(真正删除它)但仍然保持我的更改完好无损?欢迎所有提示!
我会--soft
在其他两个答案中省略并使用一个简单的git reset @^
(或git reset HEAD^
在旧版本的 git 中),默认为git reset --mixed @^
. 不同之处在于软重置会使文件暂存以进行提交,这听起来不像您想要做的。如果您真的想撤消提交,您还应该取消暂存更改,这是默认设置。我发现这在一般情况下比软重置更有用,这可能就是为什么混合是默认设置的原因。
这听起来像是 的工作git reset --soft
,其帮助 ( git help reset
) 是这样说的:
--soft
Does not touch the index file nor the working tree at all
(but resets the head to <commit>, just like all modes do).
This leaves all your changed files "Changes to be
committed", as git status would put it.
所以提交被撤消,但文件看起来仍然像以前一样。没有任何东西上演到索引中。
正如彼得所说,我会选择git reset --soft
哪个应该保留您的索引和工作目录。
在您的情况下,如果您想返回 1 个提交,您可以使用git reset --soft HEAD~
将分支指向当前 HEAD 的父提交;您的索引和工作目录仍将包含您更改的文件。
关于重置的方便文章:http: //git-scm.com/blog/2011/07/11/reset.html