在"git commit --amend"之后执行"git reset --hard HEAD"

3
我执行了git commit --amend
我做了一些更改,但想要放弃它们,所以我接着执行了git reset --hard HEAD,认为它会回到我修改的那个点。但它似乎回到了原始提交的那个点。
有很多答案可以撤消git reset --hard HEAD,但没有一个特别处理这种情况(涉及到amend),所以在继续之前,我只想确保我应该遵循相同的模式。
这似乎是最受欢迎的答案: 如何撤消 git reset --hard HEAD~1? 编辑
你知道吗,我意识到今天我做了几个--amend,但没有先执行git add .。真是糟糕的一天。如果我没有执行git add .,有没有办法找回我的工作?

除非有可能的文件系统功能(如Windows的影子副本),否则如果更改/文件从未在任何提交中,则不认为有其他方法。 - Mario
1个回答

0
如果 git commit --amend 涉及任何内容修改(git add),那么 git reset --hard 将按预期工作。
但是,如果没有任何修改,git commit --amend 仅会修改提交日期(因此更改/ SHA1 提交 SHA1)。
如果添加了这些更改,则this answer 显示git fsck应该能够向您显示这些更改。
更完整的命令(在this answer中)将是:
git fsck --cache --no-reflogs --lost-found --unreachable  HEAD

更多内容请参见 "在执行 git reset --hard HEAD^ 后恢复已添加的文件"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接