首页 > 解决方案 > git pull 从本地删除文件

问题描述

在将新提交推送到上游存储库时,我收到一个错误,我需要在推送之前提取新的更改,但这导致我丢失了一些更改。

我执行的命令是:

git reset --hard HEAD@{12}

标签: git

解决方案


在执行 git reset --hard 之前列出可能的状态(在本例中为 git reset --hard HEAD@{12})。

除了 12 次提交(可恢复)之外,关于您的其他更改:

  1. 您只是进行了更改,没有做git addgit commit

    恢复:您无法恢复这些更改,因为它不存在于 git 记录中。不过,您可以尝试 IDE 本地备份副本(对于 intellij:https ://blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-files/ )。

  2. 您只是使用添加它git add但没有提交它。

    恢复:不能保证,但您可以尝试恢复。

    以前阶段性的更改(git add)应该可以从索引对象中恢复,所以如果你这样做了,请使用 git fsck --lost-found 来定位与其相关的对象。(这会将对象写入 .git/lost-found/ 目录;从那里您可以使用 git show 查看每个文件的内容。)如果您很幸运并且您的 IDE 进行了备份,您可以检查 IDE 是否挽救了您的生命(intellij:https ://blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-files/ )。

  3. 您使用以下方式提交了更改git commit

    恢复:是的,在这种情况下您可以恢复。利用:

  git reflog

获取提交的提交哈希。然后使用:

git reset --hard <commit-retrieved-using-reflog>

推荐阅读