失われたファイルを回復する

GitGitBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

開発者として、重要なファイルが誤って削除され、コミットされる状況に遭遇することがあります。このチャレンジでは、そのようなシナリオをシミュレートし、Git の履歴検査と状態復元ツールを使用して失われたファイルを回復し、プロジェクトを正常な状態に復元する能力をテストします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/reflog("Log Ref Changes") subgraph Lab Skills git/add -.-> lab-387781{{"失われたファイルを回復する"}} git/status -.-> lab-387781{{"失われたファイルを回復する"}} git/commit -.-> lab-387781{{"失われたファイルを回復する"}} git/checkout -.-> lab-387781{{"失われたファイルを回復する"}} git/log -.-> lab-387781{{"失われたファイルを回復する"}} git/reflog -.-> lab-387781{{"失われたファイルを回復する"}} end

失われたファイルを回復する

このチャレンジを開始する前に、~/project/important-project ディレクトリに Git リポジトリが初期化されています。このリポジトリにはいくつかのコミットが含まれており、その中には 2 つの重要なファイルの作成とその後の誤削除が含まれています。以下に必要な情報を示します。

  • リポジトリは、README.md ファイルを追加する初期コミットで作成されました。
  • 2 つの重要なファイル important_algorithm.pycrucial_data.txt が、その後のコミットで追加されました。
  • その後、様々な変更を含むいくつかのコミットが行われました。
  • ある時点で、important_algorithm.pycrucial_data.txt が誤って削除され、その削除がコミットされました。
  • 誤削除の後に少なくとも 1 つ以上のコミットが行われています。

あなたのタスクは、リポジトリの履歴をたどって削除されたファイルを回復し、回復したファイルをコミットすることです。

タスク

  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 の最も強力な回復ツールのいくつかを実際に使った経験を積み、開発キャリアを通じて役立つスキルを身につけました。