【问题标题】:Recover Uncommitted Changes [duplicate]恢复未提交的更改 [重复]
【发布时间】:2025-12-21 13:55:12
【问题描述】:

我更新了分支,同时我从那个分支中提取了最新的。在我拉出最新版本后,我看到在构建分支时有几处东西被破坏了,而不是修复那些我立即运行的东西

git reset --hard, 在那一刻,我什至没有意识到我已经对几个文件进行了更改。 有没有办法恢复我的更改?

【问题讨论】:

  • 我几乎可以肯定答案是否定的。如果您没有提交或存储,您的更改将消失。但也许更聪明的 Git 大师知道得更好。
  • 等等,如果你的合并失败了,你可以简单地写git merge --abort,一切都会好起来的
  • 有这个小费真的很有帮助。但是,我也怀疑是否有办法将其恢复。
  • 非常有意义。但我现在几乎需要从头开始。感谢您的帮助。
  • 如果您的文件系统执行自动快照,您可能会幸运地回滚,但正如其他人所说(假设您没有摸索较低级别的管道命令),如果工作是'没有承诺,它已经消失了——去过那里,做过那个。

标签: git


【解决方案1】:

git 怎样才能恢复你没有提交的东西?

如果您已经提交这些更改,并且然后已经做了类似git reset --hard 的操作,那么情况就不同了 - 您可以从引用日志。但据我所知,git 无法恢复从未提交过的东西。

【讨论】:

  • 这是主要问题,我没有隐藏或提交我的更改。我确实重置了,没有考虑我在做什么。我真是太傻了。
  • 这是一个教训。在运行resetabort 之前,我会三思而后行。
【解决方案2】:

如果您没有提交、暂存或隐藏所做的更改,则无法恢复这些更改。

恢复丢失的更改。对此有 2 个 SO 问题:

如果您曾经提交过一些更改并且丢失了该提交(例如在分离状态下提交),您可以使用 reflog 找到该提交。看到这个SO question*

如果您丢失了上一次分阶段的更改,您也可以恢复它。请参阅此SO question*。 (我自己从未使用或尝试过)。

如果您隐藏了更改,您还可以使用 pop 或 apply 恢复该更改。 (我不确定弹出/丢弃的存储是否也可以恢复但未提交)。你可能会发现这个 Recover dropped stash in git 很有用。

【讨论】:

    【解决方案3】:

    为了防止这种情况,建议你不要reset --hardgit stash。在这里你可以找到the documentation。此命令允许您保持干净的工作目录,但将您的更改推送到单独的位置。你可以有更多的藏匿处。您可以命名 stash。这个答案现在对你没有帮助。希望这个答案对您将来有所帮助。

    【讨论】:

      【解决方案4】:

      我不敢说,如果您在提交或存储您的代码之前运行git reset --hard,您将无法恢复您的代码。但是,如果您使用现代 IDE,例如 IntelliJ IDEA、Pycharm 或 Goland,那么您可以查看本地历史记录并可能会取回一些代码。

      【讨论】: