git branch

コマンドの概要

ブランチの一覧表示、追加、削除を行うコマンド。

Gitではブランチはコミットのポインタ。
ブランチのディレクトリが作成され、その中にコミットが保存されているように感じるが、特定のコミットを指し示すポインタである。
git commit を繰返すだけであれば、親ひとりに子ひとり、というコミットの関係になるが、git branch は親ひとりに子どもを複数、関連付けることができる。

コマンドの使い方

ブランチの一覧表示

オプションの指定がなければローカルブランチの一覧表示

1$ git branch

オプションの指定

リモート追跡ブランチの一覧表示

1$ git branch -r

ローカルブランチとリモート追跡ブランチの一覧表示

1$ git branch -a

ブランチが参照しているコミットを表示

1$ git branch -v

ブランチが参照しているコミットに加えてリモート追跡ブランチも表示

1$ git branch -vv

チェックアウトしているブランチにマージされているブランチを表示

1$ git branch --merged

チェックアウトしているブランチにマージされていない内容をもつブランチを表示

1$ git branch --no-merged

ブランチの作成

作成したいブランチ名を指定することで現在チェックアウトしているブランチから新規ブランチを作成する。

1$ git branch <new-branch>

ブランチを作成するだけで、ブランチの移動はしない。ブランチを作成しつつ新規ブランチに移動するときは、

1$ git switch -c <new-branch>
2$ git checkout -b <new-branch>

ブランチの削除

-dオプションにブランチ名を指定することでブランチを削除する。

1$ git branch -d <branch>

削除することにより親子関係がたどれなくブランチ、すなわち

  • まだマージされていないブランチ
  • 上流ブランチにマージされていないブランチ など

は、削除できない。これを強制的に削除するには

1$ git branch -D <branch>

リモート追跡ブランチ、リモートブランチを削除するには リモート追跡ブランチを削除する

1$ git branch -dr origin/topic01

リモートブランチが削除済みで、ローカルに残っているリモート追跡ブランチを一掃するには

1$ git fetch -p
2$ git remote prune origin

都度実行するのが手間なので、configに設定可能

1$ git config --global fetch.prune true

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

1$ git push --delete origin <branch>

リモートブランチに空のブランチをプッシュする = リモートブランチが削除される

1$ git push origin :<branch>

その他の使い方

ブランチ名の変更 チェックアウトしているブランチをリネーム

1$ git branch -m <new-branch-name>

指定してブランチをリネーム

1$ git branch -m <old-branch-name> <new-branch-name>

上流ブランチの設定 チェックアウトしているブランチに対し、上流ブランチを設定する。

1$ git branch -u origin/main

プッシュしつつ上流ブランチを設定するのは、

1$ git push --set-upstream origin main