【问题标题】:Git: Is it possible to recover my local unstaged changes (which were once staged) after a git reset --hard? [duplicate]Git:是否可以在 git reset --hard 之后恢复我的本地未暂存更改(曾经暂存)? [复制]
【发布时间】:2018-11-10 01:36:36
【问题描述】:

我使用git add -A 添加了我的本地分支中的一些更改。 然后由于某些原因,我通过 git reset 取消了这些更改。 然后我打开 GitExtensions 并点击重置所有更改。 (我不知何故认为这是重置选定的更改:/)

所以我最终失去了这些变化。 考虑到这些更改一旦添加,是否可以恢复它们?

此处的对话表明,如果更改曾经上演,则可以恢复。我找不到如何: need to undo "Reset Changes" action git extensions

如果更改曾经被隐藏,我找到了恢复的方法: how-to-recover-a-dropped-stash-in-git

此处的答案表明,如果更改未提交、暂存或隐藏,则无法恢复更改: accidentally-reverted-to-master-lost-uncommitted-changes

【问题讨论】:

  • 我不知道这一点,但似乎might be possible 可以恢复您的文件,假设您确实将它们暂存。如果你真的从来没有上演过任何东西并清除了你的工作目录,那么你可能就不走运了。一个例外:如果您在像 IntelliJ 这样的良好 IDE 中打开文件,那么它(即 IDE)可能会保留自己的本地历史记录,您可以使用它来恢复。

标签: git git-stash git-extensions git-reset


【解决方案1】:

是的,这是可能的,因为文件的内容会在您暂存文件时添加到 git 存储库中。但是您不会恢复文件名,因为树对象仅在提交时创建。

在 Gitextensions 中有一个“恢复丢失的对象”功能: https://git-extensions-documentation.readthedocs.io/en/latest/maintenance.html#recover-lost-objects

请注意,文档不是最新的,并且菜单条目已被移动(它现在位于“存储库”菜单中)。

Ps:我强烈建议您使用即将发布的下一个版本的开发版本来至少恢复您的文件,因为我已经改进了该功能,以便在您的特殊情况下恢复文件更加容易。你可以在这里下载:https://ci.appveyor.com/project/gitextensions/gitextensions/branch/master/artifacts

然后我打开 GitExtensions 并单击重置所有更改。 (我不知何故假设它是重置选定的更改:/)

“重置选定的更改”是右键单击选定的文件或使用“r”键盘快捷键。

【讨论】:

    猜你喜欢
    • 2020-07-25
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2023-03-28
    • 2017-08-19
    • 2011-08-12
    • 1970-01-01
    相关资源
    最近更新 更多