如何在 Git 中恢复已删除的文件 |
您所在的位置:网站首页 › 本机主题商店被删如何恢复 › 如何在 Git 中恢复已删除的文件 |
原文:How to Recover a Deleted File in Git – Revert Changes After a Hard Reset,作者:Zaira Hira Git 是一个版本控制系统,帮助你跟踪项目生命周期中的变化。它保留了项目的历史,让你和你的团队成员在整个过程中有效地协作。 可能有这样的情况:你删除了一个文件,你想恢复它。好消息是,在使用版本控制系统(VCS)时,你可以大多数时候,可以恢复文件。 在本教程中,我们将学习 Git 提供的恢复被删除文件的不同方法。 如何在提交(commit)修改后恢复文件假设你提交了一个修改,但做了一个硬重置(git reset --hard HEAD)到一个不同的提交,这个提交删除了你当前分支中的最新提交。 ![]() 在这种情况下,你可以用git checkout或git reflog来恢复文件。 你可以从命令中找到上次提交的哈希值:git log。 之后,只需用以下方法恢复到之前的提交: git checkout如果你没有哈希 ID,你可以使用git reflog命令。 reflog是一种记录机制,它记录了所有的变化,并与它们唯一的hash-id相对应。 下面是一个git reflog输出的例子: ![]() 挑选提交 ID 并使用它来恢复该提交。 git reflog 如何在更改已进入缓存(Staged)但未提交(Committed)的情况下恢复文件假设你用git add 暂存了一个文件,然后在提交前用git reset --hard HEAD做了一次硬重置。之后,你发现缓存的文件不见了。在这种情况下,你也可以恢复这些文件。 我们可以使用git fsck命令来恢复硬重置后的文件。 什么是 git fsk?git fsck将进行文件系统检查。它检查.git目录中所有不属于任何修改的 悬空(dangling)的blobs。例如,可能有一些被缓存的修改(some changes that were staged),但没有被添加到任何地方。 ![]() 一旦我们能够识别 dangling blobs,我们就可以用git show来查看细节。 git show f24facc98b387a375a50ba6d19193626cbfe7d45根据不同的变化,你将能够查看对应的变化。 你可能还想把变化保存在一个文件中。你可以简单地使用>操作符将输出重定向到一个文件。 git show f24facc98b387a375a50ba6d19193626cbfe7d45 > restored_file.txt现在,restored_file.txt将包括提交的内容。 如何恢复既未提交(Committed )也未缓存(Staged)的更改在既没有暂存也没有提交的情况下,Git 无法帮助你恢复这些文件。 这是因为这些文件没有被添加到暂存区,Git 无法得知这些文件的状态。 在这种情况下,在临时文件或文本编辑器的缓存历史中搜索会有帮助(译者注: 如 jetbrains 开发的 IDE 的 Local History 功能)。 小结在处理有风险的文件时,最好是使用 VCS(版本控制系统)。通过这种方式,文件将被保存下来,并减少意外数据丢失的机会。 在本教程中,我们学习了如何恢复被删除的文件,无论它们是被缓存(staged )的还是提交(committed)的。 我希望你认为本教程对你有帮助。谢谢你读到最后。 你从本教程中学到的最喜欢的东西是什么?请在推特上告诉我! 你也可以在这里阅读我的其他文章。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |