Creating a new branch
/.:.:. \
/:,:.:.: / ヽ \
/.:.l:.:.:/:/ :/ ', :l ヾ`ー
/!:.:.|:.: l/ 〃 / j } :| ハ
/イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l l } ブランチというのは .git/refs から git の commit オブジェクトへの
N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j 参照に他ならない
ヽム:.} ii;_j ii;リ ル iレヽ.
`ヘ:ゝ _ 小/ さらに HEAD というのはそれらの一つへのシンボリックリンク(のようなもの)…
ヾ:{>、 _ ィ<}/|/
_, ィr'´ヽ{ ___`} ヽ、_
/| l:| | ===| |:l゙ヽ
/ | l:l l l l::l l
l ヽハ l l // |
, '´ ̄ ̄` ー-、
/ 〃" `ヽ、 \ .git/HEAD の中身は "ref: refs/heads/master" だったよね!
/ / ハ/ \ハヘ
|i │ l |リノ `ヽ}_}ハ.
|i | 从 ● ●l小N
|i (| ⊂⊃ 、_,、_, ⊂li|ノ
| i⌒ヽ j (_.ノ ノi|__/⌒)
| ヽ ヽx>、 __, イl |::::ヽ/.
| ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ
| ヾ_:::ッリ :::∨:/ | | >'''´
/.:.:. \
/:,:.:.: / ヽ \
/.:.l:.:.:/:/ :/ ', :l ヾ`ー
/!:.:.|:.: l/ 〃 / j } :| ハ
/イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l l } .git/refs/heads/ に SHA1 を書き込んだファイルを作るだけでブランチになる
N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j デフォルトでは master というブランチしかない
ヽム:.} ii;_j ii;リ ル iレヽ. ブランチをチェックアウトするには git-checkout -b する
`ヘ:ゝ _ 小/
ヾ:{>、 _ ィ<}/|/
_, ィr'´ヽ{ ___`} ヽ、_
/| l:| | ===| |:l゙ヽ
/ | l:l l l l::l l
l ヽハ l l // |
$ git checkout -b mybranch
Switched to a new branch "mybranch"
____
/⌒ ⌒\
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \ .git/refs/heads/mybranch ってファイルができたお!
| |r┬-| | .git/refs/heads/master と同じ中身だお!
\ `ー'´ /
/.:.:. \
/:,:.:.: / ヽ \
/.:.l:.:.:/:/ :/ ', :l ヾ`ー
/!:.:.|:.: l/ 〃 / j } :| ハ
/イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l l } …このコマンドはブランチを作るだけでなく
N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j HEAD もそのブランチに移動させる
ヽム:.} ii;_j ii;リ ル iレヽ.
`ヘ:ゝ _ 小/
ヾ:{>、 _ ィ<}/|/
_, ィr'´ヽ{ ___`} ヽ、_
/| l:| | ===| |:l゙ヽ
/ | l:l l l l::l l
l ヽハ l l // |
____
/⌒ ⌒\ ホジホジ
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \ .git/HEAD の中身は "ref: refs/heads/mybranch" になってたお
| mj |ー'´ | 今やる夫は mybranch ブランチにいるということかお
\ 〈__ノ /
ノ ノ
, '´ ̄ ̄` ー-、
/ 〃" `ヽ、 \
/ / ハ/ \ハヘ 今のコマンドでは HEAD からブランチを分岐させたけど
|i │ l |リノ `ヽ}_}ハ. 特定のコミットから分岐させることもできるんだよっ!
|i | 从 ● ●l小N $ git checkout -b mybranch earlier-commit ってするだけなのさっ
|i (| ⊂⊃ 、_,、_, ⊂li|ノ
| i⌒ヽ j (_.ノ ノi|__/⌒)
| ヽ ヽx>、 __, イl |::::ヽ/.
| ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ
| ヾ_:::ッリ :::∨:/ | | >'''´
/.:.:. \
/:,:.:.: / ヽ \
/.:.l:.:.:/:/ :/ ', :l ヾ`ー
/!:.:.|:.: l/ 〃 / j } :| ハ
/イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l l } master に戻りたくなったら
N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j また git-checkout …
ヽム:.} ii;_j ii;リ ル iレヽ.
`ヘ:ゝ _ 小/
ヾ:{>、 _ ィ<}/|/
_, ィr'´ヽ{ ___`} ヽ、_
/| l:| | ===| |:l゙ヽ
/ | l:l l l l::l l
l ヽハ l l // |
$ git checkout master
Switched to branch "master"
, '´ ̄ ̄` ー-、
/ 〃" `ヽ、 \
/ / ハ/ \ハヘ git-branch でブランチの一覧を見ることができるんだよっ
|i │ l |リノ `ヽ}_}ハ.
|i | 从 ● ●l小N
|i (| ⊂⊃ 、_,、_, ⊂li|ノ
| i⌒ヽ j (_.ノ ノi|__/⌒)
| ヽ ヽx>、 __, イl |::::ヽ/.
| ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ
| ヾ_:::ッリ :::∨:/ | | >'''´
$ git branch
* master
mybranch
(ヽ三/) ))
__ ( i)))
/⌒ ⌒\ \
/( ●) (●)\ ) ls .git/refs/heads とほとんど変わらないお!
./:::::: ⌒(__人__)⌒::::\ こんなコマンド作るなんてリーナスは相当の暇人に違いないおwww
| (⌒)|r┬-| |
,┌、-、!.~〈`ー´/ _/
| | | | __ヽ、 /
レレ'、ノ‐´  ̄〉 |
`ー---‐一' ̄
/ ̄ ̄\
/ノ( _ノ \
| ⌒(( ●)(●)
.| (__人__) /⌒l
| ` ⌒´ノ |`'''|
/ ⌒ヽ } | |
/ へ \ }__/ / / ̄ ̄\
/ / | ノ ノ / ●)) ((●\’, ・
( _ ノ | \´ _ ( (_人_)’∴ ), ’
| \_,, -‐ ''"  ̄ ゙̄''―---└'´ ̄`ヽ て
.| ______ ノ (
ヽ _,, -‐ ''" ノ ヽ r'" ̄
\ , '´ し/.. | J
\ ( / |
\ \ し- '^`-J
, '´ ̄ ̄` ー-、
/ 〃" `ヽ、 \
/ / ハ/ \ハヘ チェックアウトせずにブランチを作りたいときは git-branch が使えるにょろ
|i │ l |リノ `ヽ}_}ハ.
|i | 从 ● ●l小N 次はブランチのマージだよ!
|i (| ⊂⊃ 、_,、_, ⊂li|ノ
| i⌒ヽ j (_.ノ ノi|__/⌒)
| ヽ ヽx>、 __, イl |::::ヽ/.
| ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ
| ヾ_:::ッリ :::∨:/ | | >'''´