恢复丢失的文件

GitBeginner
立即练习

介绍

作为一名开发者,你可能会遇到重要文件被误删并提交的情况。本次挑战模拟了这样一个场景,旨在测试你利用 Git 的历史检查和状态恢复工具来找回丢失文件,并将项目恢复到正常工作状态的能力。

这是一个「挑战」项目,它与「引导实验」不同,你需要尝试独立完成挑战任务,而不是按照实验步骤一步步学习。挑战通常具有一定的难度。如果你觉得困难,可以与 Labby 讨论或查看解决方案。历史数据显示,这是一个初学者级别的挑战,通过率为 96%。它在学习者中获得了 94% 的好评率。

恢复丢失的文件

在开始本次挑战之前,系统已在 ~/project/important-project 目录下为你初始化了一个 Git 仓库。该仓库包含多次提交,其中包括创建以及随后误删两个重要文件的操作。以下是你需要了解的信息:

  • 仓库创建时的初始提交添加了一个 README.md 文件。
  • 在随后的提交中添加了两个关键文件:important_algorithm.pycrucial_data.txt
  • 之后又有几次包含各种更改的提交。
  • 在某个时间点,important_algorithm.pycrucial_data.txt 被误删,并且该删除操作已被提交。
  • 在误删操作之后,至少还有一次以上的提交。

你的任务是通过查阅仓库的历史记录来找回被删除的文件,然后提交这些恢复的文件。

任务

  1. 调查仓库的历史记录,找出 important_algorithm.pycrucial_data.txt 是在何时被删除的。
  2. 将仓库还原到删除操作之前的状态。
  3. 保留原始提交记录,并创建一个提交信息为 "Recover deleted files" 的新提交。

要求

  • ~/project/important-project 目录下进行操作。
  • 确保恢复后 important_algorithm.pycrucial_data.txt 确实存在。
  • 确保最后一次提交信息为 "Recover deleted files",且提交历史完整保留。

示例

成功完成挑战后,在项目目录中运行 ls 应该显示:

$ ls ~/project/important-project
important_algorithm.py crucial_data.txt README.md

运行 git status 应该显示工作区是干净的:

$ git status
On branch master
nothing to commit, working tree clean

运行 git log 应该在最顶部显示你的新提交:

$ git log --oneline
8876d8b (HEAD -> master) Recover deleted files
9b3525c Update project status
5e6234c Oops, accidentally deleted important files
9de9506 Update algorithm TODO
01c36ae Add crucial data and algorithm
638a98d Initial commit
✨ 查看解决方案并练习

总结

在本次挑战中,你面对了一个常见的 Git 场景:误删文件。你学习了如何:

  1. 检查仓库的完整历史记录,包括那些改变了 HEAD 指针的操作。
  2. 将仓库还原到特定的先前状态,有效地在项目中「回溯时间」。
  3. 创建一个新提交来保存项目恢复后的状态。

这些技能对于找回丢失的提交、撤销错误以及维护清晰的项目历史记录至关重要。请记住,虽然这些工具可以挽救灾难,但最好的做法始终是谨慎操作,并进行频繁且记录详尽的提交,以从根本上避免此类情况的发生。

通过完成本次挑战,你已经掌握了 Git 中一些最强大的恢复工具的实战经验,这些技能将在你的开发生涯中大有裨益。