🎋

Gitブランチ削除の詳細ガイド:安全にローカルブランチを整理する方法

に公開

開発を続けていると、ローカルに不要なブランチが溜まってしまいますよね。ブランチの整理は非生産的な作業なので、腰が重たくなりがち。

この記事では、ようやく重い腰をあげた筆者がGitブランチを安全に削除する方法を詳しく解説します。

基本的なブランチ削除コマンド

まずは最低限、基本の2つ。定期的に削除できる方はこれだけでも良いかも。

通常の削除(マージ済みブランチのみ)

git branch -d <branch-name>

強制削除(マージされていないブランチも削除)

git branch -D <branch-name>

リモート関連のブランチ削除

リモートで削除済みのローカルブランチを削除

GitHubなどのリモートリポジトリでブランチが削除されても、ローカルにはそのブランチの「追跡ブランチ」が残り続けます。

  • GitHubで feature/login ブランチをマージ後に削除
  • ローカルでは origin/feature/login の参照が残っている
  • git branch -a で確認すると不要な origin/xxx ブランチが表示される
git remote prune origin

# または
git fetch --prune

マージ済みブランチの一括削除

溜め込んだブランチはこの方法で削除しています。

マージ済みブランチを一覧表示

git branch --merged | grep -v "\*\|main\|master\|develop"

削除方法1: 確認プロンプト付き削除

git branch --merged | grep -v "\*\|main\|master\|develop" | xargs -p -n 1 git branch -d

削除方法2: 一括削除(注意深く使用)

git branch --merged | grep -v "\*\|main\|master\|develop" | xargs -n 1 git branch -d

プロンプト付きの方が安全なのでおすすめ。

安全なブランチ削除のベストプラクティス

1. 削除前の確認事項

現在のブランチを確認

git branch

マージ状況を確認

以下のコマンドでそれぞれマージ済み、未マージのブランチ一覧が表示されます。

git branch --merged
git branch --no-merged

2. 重要なブランチを除外する

保護すべきブランチを除外する正規表現

指定したブランチ名が除外されます。指定する文字列は各々の環境によって調整してください。

grep -v "\*\|main\|master\|develop\|staging\|release"

3. 段階的な削除プロセス

Step 1: 削除対象を表示

git branch --merged | grep -v "\*\|main\|master\|develop"

Step 2: 手動で確認して、問題なければ実行

git branch --merged | grep -v "\*\|main\|master\|develop" | xargs -n 1 git branch -d

こうすることで、削除対象のブランチを1つずつ確認しながら削除できて安全に作業ができます。

よくあるエラーと対処法

エラー: error: Cannot delete branch 'feature/xxx' checked out at ...

解決方法: 別のブランチに切り替えてから削除

git checkout main
git branch -d feature/xxx
エラー: error: The branch 'feature/xxx' is not fully merged.

解決方法: 強制削除または内容を確認

git branch -D feature/xxx  # 強制削除
# または
git log --oneline feature/xxx  # 内容を確認

削除したブランチの復旧

削除したブランチのコミットハッシュを探す

git reflog

ブランチを復旧

git checkout -b <branch-name> <commit-hash>

まとめ

ブランチの削除は以下の順序で行うのが安全です。

  1. 確認: git branch --merged で削除対象を確認
  2. 除外: 重要なブランチを除外する
  3. 実行: 確認プロンプト付きで削除
  4. 検証: 削除後の状態を確認

定期的なブランチ整理により、リポジトリを清潔に保ち、開発効率を向上させましょう。

Discussion