【问题标题】:Restoring deleted file with Git after having returned to a earlier Checkout在返回到较早的 Checkout 后使用 Git 恢复已删除的文件
【发布时间】:2025-12-03 18:05:03
【问题描述】:

不幸的是,我删除了一些我用 Git 跟踪的文件,并且很难恢复这些文件。

更详细地说,我在 git 存储库中提交了一个文件。然后,我在该存储库中添加了另外三个文件并输入了git add <FILENAME>git commit -m "blabla"。我输入了git log,感觉我不是单独跟踪文件,而是跟踪整个存储库。但是,我想对每个文件进行版本控制。然后我使用git checkout 恢复到我只提交了一个文件而其他三个文件未被跟踪的版本。现在,这三个文件都被删除了。不幸的是,git log 只返回第一个提交,而不返回我所做的后续提交。

谁能告诉我如何恢复丢失的文件?

【问题讨论】:

    标签: git git-commit git-checkout


    【解决方案1】:

    git log 显示整个仓库的日志。如果您只想查看一个文件的日志,请使用:

    git log -- my/file/path

    您可以通过再次签出分支来取回 git 下的文件。例如,

    git checkout master

    在此之后,您将获得已提交的文件。如果你真的想回到你的第一次提交,并且将所有后来添加的新文件都设为未跟踪,那么请执行以下操作:

    git reset commit_hash

    重置后,您将在工作目录中获得新文件作为未跟踪文件,您必须再次提交。

    【讨论】:

    • 我使用git checkout 恢复到我提交的最早版本,该版本仅包含存储库中的一个文件。当我现在输入git log 时,我看不到我在恢复到旧版本的存储库后所做的提交。这真的应该是log of the entire repository吗?
    • 当您签出旧提交时,git 对以后的提交一无所知。因此,如果您想再次查看这些文件,则必须再次检查分支的最新提示,例如git checkout master 假设你是大师。