Hatena::Groupmotememo

やる夫で学ぶ gitcore-tutorial/Creating a new branch

やる夫で学ぶ gitcore-tutorial/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| |',:::::ハ  
  | ヾ_:::ッリ :::∨:/ | | >'''´

やる夫で学ぶ gitcore-tutorial/Merging two branches