使用 Git 命令恢复特定数据

已完成

使用 Git 命令恢复数据的功能对于开发人员还原意外更改、恢复删除的文件或恢复丢失的提交至关重要。 它有助于最大限度地减少意外停机时间,确保项目的连续性。 不过,虽然它的好处显而易见,但也有必要指出它的潜在风险。 在应用本单元介绍的 Git 命令时,务必要小心谨慎,尤其是在操作提交历史记录或还原更改时,因为错误可能会导致数据丢失。

Git 数据恢复命令

处理数据恢复的 Git 命令可分为几类,包括恢复提交、文件、特定代码行以及删除的提交或分支。

恢复提交

  • git log:列出存储库的提交历史记录。 可以浏览日志,找到想要恢复的提交。
  • git checkout <commit>:切换到特定提交,有效“恢复”该提交时的存储库状态。
  • git cherry-pick <commit>:将特定提交引入的更改应用到当前分支。

恢复文件

  • git checkout <commit><file>:从之前的提交中还原特定文件。
  • git restore <file>:放弃本地更改,并将文件还原到上次提交的状态,前提是你尚未提交更改。

恢复特定代码行

  • git blame <file>:显示文件中每一行的修订和作者,帮助你识别引入特定更改的提交。
  • git show <commit>:<file>:显示特定提交时的文件内容。 可以指定提交和文件路径,以查看该时间点的内容。

恢复已删除的提交或分支

  • git reflog:显示所有提交记录。 可以用它查找之前删除的提交或分支的 SHA-1 哈希,然后签出或还原它。
  • git fsck --lost-found:检查存储库的完整性,并列出任何无法从分支或标记访问的提交。 可以用它来恢复丢失的提交。

请务必谨慎使用这些命令,尤其是在操作提交历史记录或还原更改时。 在开始或使用 Git 存储保存当前更改之前,请务必先创建存储库的备份,然后再尝试执行任何恢复操作。

示例方案

让我们通过一个示例场景来说明使用 Git 命令恢复已删除文件的过程。 我们假设 Git 存储库中名为 example.txt 的文件被意外删除,你需要恢复该文件。

查看提交历史记录:

  • 首先显示提交历史记录:
    git log
  • 在提交历史记录列表中确定 example.txt 文件最后一次出现的提交的 SHA-1 哈希。

还原已删除的文件:

  • 确定提交的 SHA-1 哈希后,使用 git checkout 还原文件:
    git checkout <commit_SHA>^ -- example.txt
  • 将 <commit_SHA> 替换为提交的 SHA-1 哈希。 ^ 符号表示该提交的父级,有效地将文件还原到删除前的状态。

验证更改:

  • 还原文件后,通过检查存储库状态来验证文件是否已成功还原:
    git status
  • 验证 example.txt 是否列为已修改或未跟踪文件。

暂存和提交更改:

  • 如果文件被列为已修改文件,请将其暂存以准备提交:
    git add example.txt
  • 使用适当的提交消息提交更改:
    git commit -m "Restored example.txt"