ローカルで Git ブランチが削除されたかどうかを確認する方法

GitGitBeginner
今すぐ練習

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

はじめに

この実験では、Git ブランチがローカルで削除されたかどうかを確認する方法を学びます。まず、git branch を使用して特定のブランチが存在しないことを確認し、クリーンな開始状態を保証します。次に、git reflog コマンドを調べます。これは、ブランチの削除を含むローカルリポジトリ内の参照の更新を記録する強力なツールで、変更履歴を確認することができます。最後に、最近削除されたブランチを操作してこれらの方法をテストし、ローカルでの削除状態を効果的に確認する方法を確認します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/reflog("Log Ref Changes") subgraph Lab Skills git/branch -.-> lab-560043{{"ローカルで Git ブランチが削除されたかどうかを確認する方法"}} git/reflog -.-> lab-560043{{"ローカルで Git ブランチが削除されたかどうかを確認する方法"}} end

git branch を実行して存在を確認する

このステップでは、後で削除する特定のブランチが現在、Git リポジトリに存在しないことを確認します。これは、ブランチの削除などの操作を行う前に、クリーンな状態から始めるための良い習慣です。

まず、まだプロジェクトディレクトリにいない場合は、そこに移動します。私たちのプロジェクトは ~/project/my-time-machine にあります。

cd ~/project/my-time-machine

次に、git branch コマンドを使用して、リポジトリ内の既存のブランチを一覧表示しましょう。このコマンドはデフォルトで、ローカルブランチを表示します。

git branch

次のような出力が表示されるはずです。

* master

この出力は、現在 master ブランチのみが存在し、それがアクティブなブランチであることを示しています(アスタリスク * で示されています)。

この実験では、feature/new-feature という名前のブランチを操作します。再度 git branch を実行して、このブランチがまだ存在しないことを確認しましょう。先ほど実行して master のみが表示されたので、すでに存在しないことはわかっていますが、再度コマンドを実行することで、ブランチの状態を確認する概念を強化できます。

git branch

出力は依然として master ブランチのみを表示するはずです。

* master

これにより、feature/new-feature ブランチが現時点でリポジトリに存在しないことが確認されます。これは、後続のステップでこのブランチを作成して削除する前に期待される状態です。ブランチの状態を確認する方法を理解することは、プロジェクトの履歴を効果的に管理するための基本です。

git reflog で削除を確認する

このステップでは、失われたコミットやブランチを復元するための強力なツールである git reflog コマンドを調べます。reflog(参照ログ)は、ローカルリポジトリ内のブランチの先端やその他の参照の更新を記録します。これは、コミット、マージ、リベース、さらにはブランチの削除など、リポジトリ内で行ったほぼすべての変更を記録することを意味します。

まず、プロジェクトディレクトリにいることを確認します。

cd ~/project/my-time-machine

次に、後で削除する新しいブランチを作成しましょう。これにより、reflog で探す対象ができます。

git branch feature/new-feature

このコマンドは、現在のコミットを指す feature/new-feature という名前の新しいブランチを作成します。存在を確認しましょう。

git branch

これで、両方のブランチが表示されるはずです。

* master
  feature/new-feature

次に、-d フラグを使用して feature/new-feature ブランチを削除しましょう。これは「安全な」削除です(ブランチに未マージの変更がある場合は削除を防止します)。

git branch -d feature/new-feature

削除が確認される出力が表示されるはずです。

Deleted branch feature/new-feature (was <commit-id>).

<commit-id> をターミナルに表示された実際のコミット ID に置き換えてください。

次に、削除が記録されているかどうかを確認するために reflog をチェックしましょう。

git reflog

出力にはアクションの履歴が表示されます。ブランチの削除に関連するエントリが、次のように表示されるはずです(正確な出力は異なる場合があります)。

<commit-id> HEAD@{0}: branch: deleted feature/new-feature
<commit-id> HEAD@{1}: branch: Created from <another-commit-id>
... (other reflog entries)

reflog のエントリ HEAD@{0}: branch: deleted feature/new-feature は、feature/new-feature ブランチが削除されたことを示しています。HEAD@{0} は最も最近のアクションを指します。これは、git branch からブランチが消えていても、その削除が reflog に記録されているため、潜在的に復元可能であることを示しています。

git reflog を理解することは重要です。なぜなら、これは安全網として機能するからです。誤ってブランチを削除したり、リベースやその他の操作でコミットを失った場合でも、reflog を使って作業を復元するために必要なコミット ID を見つけることができます。

最近削除されたブランチでテストする

このステップでは、git reflog の情報を使って最近削除されたブランチを潜在的に復元する方法を実演します。この特定の実験では、ブランチに独自のコミットがなかったため、完全にブランチを復元することはしませんが、復元に使用するコマンドの練習を行います。

まず、プロジェクトディレクトリにいることを確認します。

cd ~/project/my-time-machine

前のステップで feature/new-feature ブランチを削除したことを思い出しましょう。まだ削除されていることを確認しましょう。

git branch

出力は依然として master ブランチのみを表示するはずです。

* master

次に、再度 reflog を見て、削除されたブランチのエントリを見つけましょう。

git reflog

branch: deleted feature/new-feature と書かれた行を見つけます。このエントリに関連付けられたコミット ID に注意してください。<commit-id> HEAD@{0}: branch: deleted feature/new-feature のように表示されます。

削除されたブランチを復元するには、通常 git branch <branch-name> <commit-id> コマンドを使用します。ここで、<branch-name> は復元するブランチに付けたい名前で、<commit-id> はブランチが最後に指していた reflog のコミット ID です。

今回のケースでは、feature/new-feature ブランチは作成された直後に削除され、新しいコミットは一切追加されていません。したがって、reflog 内のそのコミット ID は master ブランチの先端と同じになります。このブランチを復元することは、実質的に master と同じコミットを指すブランチを再作成することになります。

削除されたブランチの reflog から見つけたコミット ID を使って、復元コマンドをシミュレートしましょう。<commit-id>reflog の出力にある実際の ID に置き換えてください。

git branch recovered-feature <commit-id>

このコマンドは、feature/new-feature が削除される前に指していたコミット ID を指す recovered-feature という名前の 新しい ブランチを作成します。

次に、再度ブランチを確認しましょう。

git branch

これで、recovered-feature ブランチが一覧に表示されるはずです。

* master
  recovered-feature

これは、git reflog を使って失われたブランチのコミット ID を見つけ、git branch を使ってそれを再作成する方法を実演しています。これは、誤った削除やその他の履歴変更操作から回復するための強力な手法です。

まとめ

この実験では、git branch コマンドを使用してローカルの Git ブランチが存在しないことを確認する方法を学びました。ブランチを作成および削除する前に、現在のブランチの状態を確認し、クリーンな開始点を確保することが重要であることを確認しました。

また、git reflog コマンドの探索を始め、ローカルリポジトリ内の参照の変更(ブランチの削除を含む)を追跡する上でのその役割を理解しました。これは、失われた作業を潜在的に復元するために重要です。