git branch

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

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

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

1$ git branch
shell

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

1$ git branch -r
shell

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

1$ git branch -a
shell

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

1$ git branch -v
shell

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

1$ git branch -vv
shell

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

1$ git branch --merged
shell

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

1$ git branch --no-merged
shell

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

1$ git branch <new-branch>
shell

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

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

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

1$ git branch -d <branch>
shell

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

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

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

1$ git branch -D <branch>
shell

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

1$ git branch -dr origin/topic01
shell

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

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

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

1$ git config --global fetch.prune true
shell

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

1$ git push --delete origin <branch>
shell

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

1$ git push origin :<branch>
shell

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

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

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

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

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

1$ git branch -u origin/main
shell

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

1$ git push --set-upstream origin main
shell