gitコマンドの使い方 ~ git branch ~
git branch コマンド概要
git branchはローカルリポジトリのブランチに対して以下の操作をするコマンドです。
- ブランチのリスト表示
- ブランチの作成
- ブランチの削除
- upstream(上流ブランチ)の設定
- upstream(上流ブランチ)の削除
ブランチのリスト表示
local-branch(ローカルブランチ)の一覧を表示
local-branch(ローカルブランチ)の一覧を表示する場合は、オプションなし もしくは「-l」オプションを指定して実行します。
git branch
git branch -l
checkout中のブランチは先頭に「*」が表示されます。
(master)
$ git branch
develop
* master
remote-tracking-branch(リモート追跡ブランチ)の一覧を表示
remote-tracking-branch(リモート追跡ブランチ)の一覧を表示する場合は、「-r」オプションを指定して実行します。
git branch -r
実行例
(master)
$ git branch -r
origin/master
local-branch(ローカルブランチ)とremote-tracking-branch(リモート追跡ブランチ)の一覧を表示
ローカルブランチとリモート追跡ブランチの両方を表示したい場合は、「-a」オプションを指定して実行します。
git branch -a
checkout中のブランチは先頭に「*」が表示されます。
(master)
$ git branch -a
develop
* master
remotes/origin/master
commit-hashとcommitメッセージを表示する
「-v」オプションを指定するとブランチの一覧と共にcommit-hashとcommitメッセージを表示することができます。
「-v」オプションは、他のオプション「-l、-r、-a」と組み合わせて利用します。
(master)
$ git branch -v
develop 3d63228 commit-A
* master 3d63228 commit-A
(master)
$ git branch -lv
develop 3d63228 commit-A
* master 3d63228 commit-A
(master)
$ git branch -rv
origin/master 3d63228 commit-A
(master)
$ git branch -av
develop 3d63228 commit-A
* master 3d63228 commit-A
remotes/origin/master 3d63228 commit-A
commit-hashとcommitメッセージとupstreamを表示する
「-v」にもう一つ「v」を加えた「-vv」オプションを指定することでupstreamも併せて表示することができます。
「-v」オプションと同様に、他のオプション「-l、-a」と組み合わせて利用します。
「-r」で表示されるremote-tracking-branch(リモート追跡ブランチ)にはupstreamが存在しないため、「-vv」オプションを指定しても変化はありません。
(master)
$ git branch -vv
develop 3d63228 commit-A
* master 3d63228 [origin/master] commit-A
(master)
$ git branch -lvv
develop 3d63228 commit-A
* master 3d63228 [origin/master] commit-A
(master)
$ git branch -rvv
origin/master 3d63228 commit-A
(master)
$ git branch -avv
develop 3d63228 commit-A
* master 3d63228 [origin/master] commit-A
remotes/origin/master 3d63228 commit-A
ブランチの作成
checkout中のブランチを元に新規でブランチを作成する
git branch [branch-name]
masterブランチをcheckoutしている状態で、developブランチを作成する場合の実行例です。
(master)
$ git branch develop
(master)
$ git branch -vv
develop 3d63228 commit-A
* master 3d63228 [origin/master] commit-A
元になるブランチを指定して新しいブランチを作成する
git branch [branch-name] [from-branch-name]
masterブランチをcheckoutしている状態で、developブランチを元にfeatureブランチを作成する場合の実行例です。
(master)
$ git branch feature develop
(master)
$ git branch -vv
develop 3d63228 commit-A
feature 3d63228 commit-A
* master 3d63228 [origin/master] commit-A
元になるブランチにはlocal-branch(ローカルブランチ)以外にremote-tracking-branch(リモート追跡ブランチ)を指定できます。
ブランチの削除
指定したブランチを削除する
git branch -d [branch-name]
「-d」オプションを指定するとブランチを削除することができますが、以下の注意点があります。
- 削除対象のブランチをcheckoutしている場合は削除できない
- 削除対象のブランチを編集しcommitを作成しmergeしていない場合は削除できない
例えば、developブランチをcheckoutした状態でブランチを削除してみると、以下のようなエラーメッセージが表示されます。
(master)
$ git checkout develop
Switched to branch 'develop'
(develop)
$ git branch -d develop
error: Cannot delete branch 'develop' checked out at 'C:/Git/branch-test'
また、developブランチでcommitを作成しmergeをしない状態でdevelopブランチを削除しようとすると、以下のようなエラーメッセージが表示されます。
(develop)
$ echo 'bbb' > file-B.txt
(develop)
$ git add .
warning: LF will be replaced by CRLF in file-B.txt.
The file will have its original line endings in your working directory
(develop)
$ git commit -m 'commit-B'
[develop 5b676d2] commit-B
1 file changed, 1 insertion(+)
create mode 100644 file-B.txt
(develop)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
(master)
$ git branch -d develop
error: The branch 'develop' is not fully merged.
If you are sure you want to delete it, run 'git branch -D develop'.
指定したブランチを強制削除する
git branch -D [branch-name]
「-D」は「-d」オプションと同じくブランチを削除するのですが、「-D」は強制削除する場合に指定します。
具体的には、「-d」オプションでは「削除対象のブランチを編集しcommitを作成しmergeしていない場合は削除できない」ですが、「-D」オプションを指定すると削除することができます。
先ほど削除できなかったdevelopブランチを削除してみます。
(master)
$ git branch -d develop
error: The branch 'develop' is not fully merged.
If you are sure you want to delete it, run 'git branch -D develop'.
(master)
$ git branch -D develop
Deleted branch develop (was 5b676d2).
(master)
$ git branch -vv
feature 3d63228 commit-A
* master 3d63228 [origin/master] commit-A
「-D」オプションを指定すると削除することができました。
upstream(上流ブランチ)の設定
git branch -u [remote-tracking-branch]
checkout中のブランチのupstream(上流ブランチ)を設定することができます。
git fetchやgit pushなどリモートリポジトリとのやり取りを行う場合に、ブランチ名を省略した場合にデフォルトで設定されるブランチです。
upstream(上流ブランチ)には、上記の理由からremote-tracking-branch(リモート追跡ブランチ)を指定することが多いですが、ローカルブランチを指定することも可能です。
developブランチの上流ブランチにorigin/developブランチを設定してみます。
(develop)
$ git branch -vv
* develop 3d63228 commit-A
feature 3d63228 commit-A
master 3d63228 [origin/master] commit-A
(develop)
$ git branch -u origin/develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
(develop)
$ git branch -vv
* develop 3d63228 [origin/develop] commit-A
feature 3d63228 commit-A
master 3d63228 [origin/master] commit-A
upstreamの設定前後でgit branch -vvコマンドの結果が変わっていますね。
upstream(上流ブランチ)の削除
git branch --unset-upstream
設定されているupstreamのブランチを削除する場合には「–unset-upstream」オプションを指定します。
developブランチに設定されたupstreamを削除します。
(develop)
$ git branch -vv
* develop 3d63228 [origin/develop] commit-A
feature 3d63228 commit-A
master 3d63228 [origin/master] commit-A
(develop)
$ git branch --unset-upstream
(develop)
$ git branch -vv
* develop 3d63228 commit-A
feature 3d63228 commit-A
master 3d63228 [origin/master] commit-A
git branch の全てのオプションを確認する方法
以下のコマンドを実行するとブラウザでgit branchのヘルプページが表示される
git branch --help