我做了一个提交,但现在有点难以看到我改变了什么。我当然可以做一个git diff,但我宁愿撤消上次提交并保持我的所有更改,以便我的IDE(PyCharm)只显示我已经更改了哪些文件。
那么有没有办法撤消上次提交(真的删除它),但仍保持我的变化?欢迎所有提示!
我做了一个提交,但现在有点难以看到我改变了什么。我当然可以做一个git diff,但我宁愿撤消上次提交并保持我的所有更改,以便我的IDE(PyCharm)只显示我已经更改了哪些文件。
那么有没有办法撤消上次提交(真的删除它),但仍保持我的变化?欢迎所有提示!
这听起来像是一份工作 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.
因此撤消提交,但文件仍然像以前一样。没有任何东西进入索引。
我会离开的 --soft
在另外两个答案和简单的去 git reset @^
(要么 git reset HEAD^
在旧版本的git)中,默认为 git reset --mixed @^
。不同之处在于软复位会使文件暂存以进行提交,这不是您想要做的事情。如果您确实要撤消提交,则还应该取消暂时更改,这是默认设置。我发现在一般情况下这比软复位更有用,这可能是默认混合的原因。
正如彼得所说,我会一起去 git reset --soft
哪个应该保留你的索引和工作目录。
在您的情况下,如果您想返回1提交,您可以使用 git reset --soft HEAD~
将分支指向当前HEAD的父提交;您的索引和工作目录仍将包含您更改的文件。
一篇关于重置的方便文章: http://git-scm.com/blog/2011/07/11/reset.html