如何撤消git中的最后一次提交,但保持我的更改为未分级?

时间:2014-03-12 15:05:23

标签: git git-revert git-stage

我做了一个提交,但现在很难看到我改变了什么。我当然可以做一个git diff,但我宁愿撤消上一次提交并保持我的所有更改,以便我的IDE(PyCharm)只显示我已经更改了哪些文件。

那么有没有办法撤消上一次提交(真的删除它)但仍保持我的变化?欢迎所有提示!

3 个答案:

答案 0 :(得分:10)

这听起来像是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.

因此撤消提交,但文件仍然像以前一样。没有任何东西进入索引。

答案 1 :(得分:9)

我会在其他两个答案中取消--soft并使用简单的git reset @^(或旧版本的git中的git reset HEAD^),默认为{{1} }。不同之处在于软复位会使文件暂存以进行提交,这不是您想要做的事情。如果您确实要撤消提交,则还应该取消更改,这是默认设置。我发现这在一般情况下比软复位更有用,这可能是为什么混合是默认值。

答案 2 :(得分:3)

正如彼得所说,我会选择git reset --soft,这应该保留你的索引和工作目录。

在您的情况下,如果您想返回1提交,您可以使用git reset --soft HEAD~将分支指向当前HEAD的父提交;您的索引和工作目录仍将包含您更改的文件。

有关重置的简便文章:http://git-scm.com/blog/2011/07/11/reset.html