git - "git reset --hard HEAD"之后的 "git commit --amend"

标签 git

我执行了 git commit --amend

我做了一些更改,但想放弃它们,所以我随后执行了 git reset --hard HEAD,认为它会回到我修改的点。好像又回到了最初提交的那个点。

这里有很多关于撤消 git reset --hard HEAD 的答案,但没有一个专门处理在这种情况下撤消 reset (使用 amend 涉及),我只是想确保在继续之前我应该​​遵循相同的模式。

这似乎是最受欢迎的答案: How can I undo git reset --hard HEAD~1?

编辑

你知道吗,我意识到我今天做了几个 --amend 而没有先执行 git add .。多么糟糕的一天。如果我没有 git add .,有什么方法可以恢复工作吗?

最佳答案

如果 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

更多信息在“Recovering added file after doing git reset --hard HEAD^”。

关于git - "git reset --hard HEAD"之后的 "git commit --amend",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24300416/

相关文章:

git - 有没有办法将文件保留在 GIT 存储库中并在本地删除它而不提交删除?

c++ - YouCompleteMe 无法自动完成

git - Cent os bash 无法识别选项 --adduser 命令上的系统

git - 当我在子目录中时,如何在整个树中进行 git grep?

git - 在一个仓库 Github 中添加多个项目

c++ - 如何组织 git 工作流以同时修复错误和引入新功能

git - 如何使用图形在 git 日志中进行对齐

xcode - 重命名时文件名后的问号 - 如何从 Xcode 中清除?

git - 可以在预提交的git hook中重新登台文件吗?

git - Azure 云服务和 Git 持续部署?