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 stash を使用して現在の変更を保存してください。

シナリオ例

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"