ローカルとリモートで Git ブランチを削除する方法

概要

  • ブランチの削除は、一般的な Git ワークフローの重要な部分です。
  • 「git branch -d [ブランチ名]」コマンドを使用してローカル ブランチを削除できますが、マージされていない変更には注意してください。
  • GitHub Desktop、GitKraken、Tower、Bitbucket などのさまざまなツールにはブランチを削除するための独自のメソッドがあるため、各ツールの具体的なプロセスを理解しておく必要があります。

Git のブランチは非常に軽量なので、必要なときにいつでも作成できます。しかし、不要になったブランチが残ってしまうこともあります。では、ブランチを削除するにはどうすればよいでしょうか。

ブランチを削除する理由

まず、Git ブランチを使用してプロジェクトの構造化方法をまだ学習している場合は、ブランチを作成してから不要だったと判断する可能性がかなりあります。ブランチングは軽量な操作なので、これは問題ありません。非常に高速で、ディスク容量を効率的に使用します。

その結果、多くの Git 開発ワークフローでは、非常に小さく短いタスクであってもブランチングを奨励しています。たとえば、一般的な戦略は、バグ修正ごとに個別のブランチを作成することです。

ブランチを削除することは、ブランチを作成することと同じように日常的なワークフローの一部である必要があります。

ブランチのあるサンプル リポジトリ

以下の例は、次の構造を持つサンプル リポジトリを参照しています。

このリポジトリには、maindevという 2 つのブランチがあることに注意してください。これらのローカル ブランチはそれぞれ追跡ブランチであり、リモート サーバー (origin) に対応するアップストリーム ブランチがあります。

ブランチを見失いやすいので、コマンドラインから Git ブランチを一覧表示する方法や、お気に入りのクライアントでブランチを表示する方法を理解していることを確認してください。

コマンドラインを使用してブランチを削除する

ブランチを削除するための基本的なコマンド構文は次のとおりです。

git branch (-d | -D) [-r] <branchname>...

ローカル ブランチを削除する方法

コマンドの最も単純な形式は、すべての変更がマージされていることを前提に、ローカル ブランチを削除します。

git branch -d dev

正常に実行されると、確認メッセージが表示されます。

現在アクティブなブランチは削除できません。削除しようとすると、次のようなメッセージが表示されます。

マージされていない、プッシュされていない変更があるローカル ブランチを削除すると、それらの変更は失われます。したがって、git はデフォルトでそのようなブランチの削除を拒否します。この例では、dev にはリモート ブランチにプッシュされていないマージされていない変更があります。

エラー メッセージにあるように、-Dフラグを使用して強制的に削除できます。

対応するリモート ブランチが最新の状態であれば、マージされていない場合でもローカル追跡ブランチを削除できます。Git は引き続き警告を表示するため、何が起こったかがわかります。

リモート ブランチを削除する方法

リモート ブランチの削除はまったく異なります。-dフラグとともにgit pushコマンドを使用して削除します。その後、リモートの名前 (通常はorigin) とブランチ名を指定します。

GitHub Desktop を使用してローカル ブランチとリモート ブランチを削除する

コマンドラインの git プログラムとは異なり、GitHub のデスクトップ アプリではアクティブなブランチのみを削除できます。このアクションは、ブランチメニューから削除オプションを選択して確認することで実行できます。

GitHub Desktop では、git 自体はサポートしているにもかかわらず、デフォルトのブランチ (main など) は削除できません。デフォルトのブランチが現在アクティブなブランチの場合、アプリはメニュー アクションを無効にします。

ブランチがリモート ブランチも表している場合、GitHub Desktop ではリモートからもブランチを削除するオプションが提供されます。

GitKraken を使用してブランチを削除する

GitKraken では、リポジトリのローカル ブランチとリモート ブランチが左側のサイドバーに表示されます。それぞれを個別に削除する必要があります。

適切なブランチ名にカーソルを合わせて、3 つの縦の点のように見えるブランチアクション メニューをクリックします。メニューから[ブランチ名] を削除を選択します。

これは破壊的な操作であることを知らせる確認メッセージが表示されます。削除ボタンで続行することを確認できます。

git コマンドライン プログラムのデフォルトの動作を反映して、最初に削除するブランチ以外のブランチに切り替える必要があります。そうしないと、エラー メッセージが表示されます。

Tower を使用してローカル ブランチとリモート ブランチを削除する

Tower でブランチを削除する方法は、GitKraken でブランチを削除する方法と非常によく似ています。アプリは、左側のペインにあるパネルにローカル ブランチとリモート ブランチを表示します。任意のブランチを右クリックし、コンテキスト メニューから [削除] オプションを選択します。

重要な違いの 1 つは、確認時にリモート ブランチとそのローカル ブランチを削除できることです。

GitHub でブランチを削除する

GitHub はリモート ソースとしてのみ機能するため、ブランチはデフォルトでリモートになります。GitHub の Web サイトを使用してブランチを削除する場合は、ここで説明する他の方法のいずれかを使用して、対応するローカル ブランチを削除する必要があります。

GitHub Desktop アプリと同様に、GitHub の Web サイトではデフォルトのブランチを削除できません。削除しようとすると、エラー メッセージが表示されます。

ただし、他のブランチを削除するのは簡単です。リポジトリのコードページから、ブランチリンクをクリックし、削除するブランチを見つけて、ごみ箱のように見えるブランチを削除アイコンをクリックします。

マージされていない変更のチェックはないため、GitHub はブランチをすぐに削除することに注意してください。ただし、常にリモート ブランチを表すため、この動作は理にかなっています。

削除後、ブランチを復元するためのボタンが表示されることに注意してください。ただし、これは単なる便利な元に戻す機能であり、削除アイコンを誤ってクリックした場合に備えて用意されています。ページを更新したり離れたりするとすぐにオプションが失われるため、この機能に頼らないでください。

Bitbucket でローカル ブランチとリモート ブランチを削除する

GitHub と同様に、Bitbucket でもデフォルトのブランチを削除することはできません。Bitbucket では、リポジトリ設定でこれをメイン ブランチと呼びます。ブランチタブにリストされている他のブランチは、対応するアクションメニューから削除できます。

また、大規模なクリーンアップ操作を行う場合は、複数のブランチを一度に削除することもできます。

ブランチの削除は一般的な Git ワークフローの一部です

Git ブランチはワークフローを複雑にする可能性があります。特に、ローカル ブランチ、リモート ブランチ、追跡ブランチがある場合はそうです。しかし、単純な日常の開発では、常にローカル ブランチを作成したり削除したりすることになるでしょう。これは、慣れるべき一般的な git ワークフローの中核的な側面です。

ブランチの削除方法を正確に覚えておくのが難しい場合は、ブランチを削除してプロセスを単純化する別名を設定することを検討してください。