我已经提交了更改,但现在很难看出我都做了哪些修改。当然我可以使用git diff,但我宁愿撤销上次提交并保留所有更改,这样我的IDE(PyCharm)只会显示哪些文件已被更改。
那么有没有一种方法可以撤销上次提交(真正删除它),但仍然保留我的更改?欢迎提供所有提示!
我已经提交了更改,但现在很难看出我都做了哪些修改。当然我可以使用git diff,但我宁愿撤销上次提交并保留所有更改,这样我的IDE(PyCharm)只会显示哪些文件已被更改。
那么有没有一种方法可以撤销上次提交(真正删除它),但仍然保留我的更改?欢迎提供所有提示!
我建议在其他两种答案中去掉 --soft
参数,使用简单的命令 git reset @^
(或旧版本的 git reset HEAD^
),这会默认为 git reset --mixed @^
。不同之处在于软重置会保留文件暂存区,这似乎不是您想要的结果。如果您真的想撤销提交,您还应该取消暂存的更改,这是默认操作。在一般情况下,我发现这比软重置更有用,这可能是为什么混合重置是默认值的原因。
@^
吗?我在 Windows 上这样做,但 GitBash 会问我 more?
,不知道是什么意思。 - Post Impaticagit reset @^^
- Post ImpaticaHEAD~
在 git reset --soft
的末尾,什么也没发生。 - Harry这听起来像是使用 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
,但是当我运行 git hist
时,我仍然看到我的最后一次提交。所以我猜这不是解决我的问题的办法。还有其他的想法吗? - kramer65HEAD
不再指向它。这是一个悬空引用,并将被垃圾回收。 - Peter Westlakegit reset --soft <上一个提交的哈希值>
成功了。插入哈希值最终解决了我的问题。无论如何还是谢谢! - kramer65
reflog
中找到这些悬空提交。 - Drew Noakes