Gitでブランチを削除する方法!ローカル・リモート両方解説

git
\ Gitがよく分からない初心者の方へ /
さわっておぼえるGit入門
Gitがよく分からない初心者でも、
この1冊で基本操作を一通り理解できます。
👉 Amazonで詳しく見る
Kindle Unlimitedなら無料で読めます
▶ 無料で読む(Kindle Unlimited)

今回は、Gitでブランチを削除する方法について書いています。
Gitを使っていると、下記のようにブランチを整理したいことがあるかと思います。

  • 作業が終わったブランチを整理したい
  • merge済みブランチを消したい
  • GitHub上の不要なブランチを削除したい

Gitでは、不要なブランチを削除して整理することで、管理しやすい状態を保てます。

この記事では、下記の内容について解説しています。

  • ローカルブランチ削除
  • リモートブランチ削除
  • 削除できない原因
  • 安全に削除する方法

Gitのブランチ削除について

Gitではブランチを作成して開発していくのが基本です。

開発を長く進めていくと、リポジトリに不要なブランチも増えていきます。
例えば、次のようなブランチです。

  • 機能追加が終わったブランチ
  • merge済みの開発ブランチ
  • 間違って作成したブランチ

ブランチを放置すると一覧が増えすぎて管理しづらくなるため、定期的に整理するのがおすすめです。

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

まずは、自分のPC内にある「ローカルブランチ」を削除する方法です。

merge済みブランチを削除する

最も安全な削除方法はこちらになります。

git branch -d ブランチ名

例:

git branch -d feature/login

-dオプションをつけることで「merge済みなら削除する」という意味になります。
ブランチの変更内容が、親ブランチ(mainやdevelopなど)にすでにマージされている場合に削除されます。

どこにもマージされていない時は、警告を出して削除しません。
そのため、こちらのオプションを使うことで、未保存の変更を誤って消しにくくなります。

mergeされていないブランチを強制削除する

まだmergeしていないブランチを強制削除したい場合はこちらです。

git branch -D ブランチ名

例:

git branch -D test-branch

-Dオプションは強制削除です。
まだマージしていないコミットも消える可能性があるため注意してください。

ブランチ一覧を確認する方法

削除前にブランチ一覧を確認したい場合はこちらです。
オプションや引数なしで実行すると、一覧が確認できます。

git branch

現在いるブランチには * が付きます。

例:

* main
  feature/login
  test

現在いるブランチは削除できない

現在、削除対象のブランチにいる場合には削除できません。
例えば、今feature/loginにいる状態で、下記のコマンドを実行するとエラーになります。

git branch -d feature/login

そのため、先に別ブランチへ移動したあとに削除する必要があります。

git switch main

上記でmainブランチに移動した後、下記のコマンドで削除します。

git branch -d feature/login

※ 現在のブランチはgit branchコマンド実行時に*がついているブランチです。

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

次はGitHubなどの「リモートブランチ」を削除する方法です。

リモートブランチ削除コマンド

こちらでリモートブランチを削除できます。

git push origin --delete ブランチ名

例:

git push origin --delete feature/login

これで、GitHub上のブランチも削除できます。
リモートブランチを削除しても、ローカルには残っているので、不要な場合は先ほどのgit branch -dを使って削除しましょう。

古いリモート追跡ブランチを整理する

リモート削除後、ローカル側に古い情報が残る場合があります。
その場合はこちらを実行します。

# --prune は -p と省略も可能です
git fetch --prune

実行すると、リモートにはもう存在しない不要なリモート追跡ブランチが整理されます。

これで、git branch -aをしたときのorigin情報が最新化されます。
現在、本当に存在するブランチだけが表示されるようになります。

※この操作で、自分が作成したローカルブランチ(作業中のブランチ)が勝手に消えることはありません。

GitHub上でブランチを削除する方法

GitHubの画面から削除することも可能です。

手順:

  1. GitHubを開く
  2. 「Branches」を開く
    GitHubでbranchesに移動する
  3. 不要ブランチのゴミ箱アイコンを押す
    GitHubで不要なブランチの削除

GUIで操作したい場合はこちらでもOKです。

ブランチ削除時によくあるエラー

ブランチ削除時によくあるエラーです。

error: The branch is not fully merged

error: The branch 'feature/test' is not fully merged
If you are sure you want to delete it, run 'git branch -D feature/test'.

これは「まだmergeされていない」ので、警告がでています。
問題なければ、下記のコマンドで強制削除します。

git branch -D feature/test

error: Cannot delete branch

現在いるブランチは削除できません。
先に移動してください。

git switch main

安全にブランチ削除するコツ

安全にブランチを削除するコツについてです。

基本は -d を使う

git branch -d ブランチ名

-dオプションを使うことで、merge済み確認が入るため安全です。

push済みか確認する

消す前にGitHubへpushされているか、本当に不要なブランチか確認しましょう。
もしローカルだけの変更だった場合、復旧が面倒になります。

merge後に削除する運用がおすすめ

開発のフローとして、下記のように開発後に削除すると良いです。

  1. featureブランチ作成
  2. 作業
  3. merge(mainブランチへ)
  4. ブランチ削除

この流れにすると整理しやすくなります。

まとめ

Gitでブランチを削除する方法について解説しました。
まとめると、下記のようになります。

ローカルブランチ削除

git branch -d ブランチ名

強制削除

git branch -D ブランチ名

リモートブランチ削除

git push origin --delete ブランチ名

不要ブランチを整理することで、開発中のものだけに絞られて効率が上がるかと思います。
開発完了後は適切に整理していきましょう。

コメント