Hatena::Groupmotememo

やる夫で学ぶ gitcore-tutorial/Making a change

やる夫で学ぶ gitcore-tutorial/Making a change

           /.:.:.         \
              /:,:.:.:  /   ヽ    \
          /.:.l:.:.:/:/   :/  ', :l   ヾ`ー
            /!:.:.|:.: l/  〃 / j } :|    ハ
        /イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l  l }
         N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j  …思い出して
          ヽム:.} ii;_j    ii;リ ル iレヽ.    インデックスに入っていた hello ファイルと
                `ヘ:ゝ   _     小/      その後変更した hello ファイルは別物だった
                  ヾ:{>、 _ ィ<}/|/       
           _, ィr'´ヽ{ ___`} ヽ、_
         /| l:|   | ===|   |:l゙ヽ
          /  | l:l   l     l   l::l l
           l  ヽハ    l    l  //  |


       ____
     /⌒  ⌒\ ホジホジ
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \  確かに git-diff-files -p の結果は
  |    mj |ー'´      |  インデックスに追加したファイルとワーキングツリーとの差分だったお
  \  〈__ノ       /
    ノ  ノ


           /.:.:.         \
              /:,:.:.:  /   ヽ    \
          /.:.l:.:.:/:/   :/  ', :l   ヾ`ー
            /!:.:.|:.: l/  〃 / j } :|    ハ
        /イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l  l }
         N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j  
          ヽム:.} ii;_j    ii;リ ル iレヽ.  git-write-tree で作成される tree の内容も
                `ヘ:ゝ   _     小/     インデックスの中身と一緒
                  ヾ:{>、 _ ィ<}/|/    git-diff-index で tree とインデックス、
           _, ィr'´ヽ{ ___`} ヽ、_      もしくは tree とワーキングツリーとの差分を見ることができる
         /| l:|   | ===|   |:l゙ヽ   デフォルトでは tree とワーキングツリーとの差分
          /  | l:l   l     l   l::l l
           l  ヽハ    l    l  //  |
$ git diff-index -p HEAD
diff --git a/hello b/hello
index 557db03..263414f 100644
--- a/hello
+++ b/hello
@@ -1 +1,2 @@
 Hello World
+It's a new day for git
       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \  さっきの git diff-file -p と同じ diff が出力されたお!
  |     |r┬-|     | 
  \      `ー'´     /


     , '´ ̄ ̄` ー-、     
   /   〃" `ヽ、 \    
  / /  ハ/     \ハヘ   
  |i │ l |リノ    `ヽ}_}ハ.  HEAD っていうのは master の最後のコミットを指すんだったねっ
  |i | 从 ●     ●l小N   だからこれはさっきのコミットツリーとワーキングツリーとの diff なんだよっ
  |i (| ⊂⊃ 、_,、_, ⊂li|ノ  
  | i⌒ヽ j  (_.ノ   ノi|__/⌒) 
  | ヽ  ヽx>、 __, イl |::::ヽ/.
  | ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ  
  | ヾ_:::ッリ :::∨:/ | | >'''´


           /.:.:.         \
              /:,:.:.:  /   ヽ    \
          /.:.l:.:.:/:/   :/  ', :l   ヾ`ー
            /!:.:.|:.: l/  〃 / j } :|    ハ
        /イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l  l }
         N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j 
          ヽム:.} ii;_j    ii;リ ル iレヽ.  git diff HEAD で git diff-index -p HEAD と同じことができる
                `ヘ:ゝ   _     小/    
                  ヾ:{>、 _ ィ<}/|/    
           _, ィr'´ヽ{ ___`} ヽ、_      
         /| l:|   | ===|   |:l゙ヽ   
          /  | l:l   l     l   l::l l
           l  ヽハ    l    l  //  |


       ____
     /⌒  ⌒\
   /( ●)  (●)\   コマンドの小出しにはもう慣れたお!
  /::::::⌒(__人__)⌒::::: \  
  |     |r┬-|     |  
  \      `ー'´     /



           /.:.:.         \
              /:,:.:.:  /   ヽ    \
          /.:.l:.:.:/:/   :/  ', :l   ヾ`ー
            /!:.:.|:.: l/  〃 / j } :|    ハ
        /イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l  l }
         N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j 今のは tree とワーキングツリーとの差分だった
          ヽム:.} ii;_j    ii;リ ル iレヽ.  git diff-index に --cached オプションを渡すことで
                `ヘ:ゝ   _     小/    tree とインデックスの差分を見ることができる
                  ヾ:{>、 _ ィ<}/|/    
           _, ィr'´ヽ{ ___`} ヽ、_      
         /| l:|   | ===|   |:l゙ヽ   
          /  | l:l   l     l   l::l l
           l  ヽハ    l    l  //  |
$ git diff-index --cached -p HEAD
       ____
     / \  /\ キリッ
.   / (ー)  (ー)\  何の差分も出力されないのは
  /   ⌒(__人__)⌒ \  今のインデックスはさっきコミットしたばかりだからだお!
  |      |r┬-|    |  
   \     `ー'´   /  
  ノ            \

     , '´ ̄ ̄` ー-、     
   /   〃" `ヽ、 \    
  / /  ハ/     \ハヘ   
  |i │ l |リノ    `ヽ}_}ハ.  ちなみに git-diff-index はインデックスに入ってるファイルのみ比較するにょろ
  |i | 从 ●     ●l小N   適当にファイルを作ってもインデックスに入ってなければその diff は表示されないよっ
  |i (| ⊂⊃ 、_,、_, ⊂li|ノ  
  | i⌒ヽ j  (_.ノ   ノi|__/⌒) 
  | ヽ  ヽx>、 __, イl |::::ヽ/.
  | ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ  
  | ヾ_:::ッリ :::∨:/ | | >'''´


           /.:.:.         \
              /:,:.:.:  /   ヽ    \
          /.:.l:.:.:/:/   :/  ', :l   ヾ`ー
            /!:.:.|:.: l/  〃 / j } :|    ハ
        /イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l  l }
         N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j  …これからファイルへの変更をコミットする
          ヽム:.} ii;_j    ii;リ ル iレヽ.   「ワーキングツリー」「インデックス」「コミットされたツリー」
                `ヘ:ゝ   _     小/     この三つの違いを意識しておいて
                  ヾ:{>、 _ ィ<}/|/    
           _, ィr'´ヽ{ ___`} ヽ、_     まずはインデックスを更新する  
         /| l:|   | ===|   |:l゙ヽ   
          /  | l:l   l     l   l::l l
           l  ヽハ    l    l  //  |
git update-index hello
     , '´ ̄ ̄` ー-、     
   /   〃" `ヽ、 \    
  / /  ハ/     \ハヘ   
  |i │ l |リノ    `ヽ}_}ハ.  もうインデックスに追加されてるから --add はいらないよっ
  |i | 从 ●     ●l小N  
  |i (| ⊂⊃ 、_,、_, ⊂li|ノ  
  | i⌒ヽ j  (_.ノ   ノi|__/⌒) 
  | ヽ  ヽx>、 __, イl |::::ヽ/.
  | ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ  
  | ヾ_:::ッリ :::∨:/ | | >'''´



           /.:.:.         \
              /:,:.:.:  /   ヽ    \
          /.:.l:.:.:/:/   :/  ', :l   ヾ`ー
            /!:.:.|:.: l/  〃 / j } :|    ハ
        /イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l  l }
         N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j  ここで git-diff-* を試してみて
          ヽム:.} ii;_j    ii;リ ル iレヽ.   
                `ヘ:ゝ   _     小/     
                  ヾ:{>、 _ ィ<}/|/    
           _, ィr'´ヽ{ ___`} ヽ、_   
         /| l:|   | ===|   |:l゙ヽ   
          /  | l:l   l     l   l::l l
           l  ヽハ    l    l  //  |
$ git diff-files -p
$ git diff-index -p HEAD
diff --git a/hello b/hello
index 557db03..263414f 100644
--- a/hello
+++ b/hello
@@ -1 +1,2 @@
 Hello World
+It's a new day for git
$ git diff-index --cached -p HEAD
diff --git a/hello b/hello
index 557db03..263414f 100644
--- a/hello
+++ b/hello
@@ -1 +1,2 @@
 Hello World
+It's a new day for git

       ____
     /⌒  ⌒\
   /( ●)  (●)\  インデックスとワーキングツリーの内容が一緒だから
  /::::::⌒(__人__)⌒::::: \ git-diff-files は何も出力しなくなったんだお!
  |     |r┬-|     | 
  \      `ー'´     /



           /.:.:.         \
              /:,:.:.:  /   ヽ    \
          /.:.l:.:.:/:/   :/  ', :l   ヾ`ー
            /!:.:.|:.: l/  〃 / j } :|    ハ
        /イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l  l }
         N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j  そう…インデックスを更新したから次はコミット
          ヽム:.} ii;_j    ii;リ ル iレヽ.   
                `ヘ:ゝ   _     小/     
                  ヾ:{>、 _ ィ<}/|/    
           _, ィr'´ヽ{ ___`} ヽ、_   
         /| l:|   | ===|   |:l゙ヽ   
          /  | l:l   l     l   l::l l
           l  ヽハ    l    l  //  |


       ____
     /⌒  ⌒\
   /( >)  (<)\  git-write-tree なんて使ってらんないお!
  /::::::⌒(__人__)⌒::::: \  さっき言ってた git-commit を使ってみるお!
  |    /| | | | |     |  目標をインデックスに入れてコミットだお!
  \  (、`ー―'´,    /
       ̄ ̄ ̄  

     , '´ ̄ ̄` ー-、     
   /   〃" `ヽ、 \    
  / /  ハ/     \ハヘ   
  |i │ l |リノ    `ヽ}_}ハ.  git-commit は自動的に HEAD を親コミットとしてコミットしてくれるのさっ
  |i | 从 ●     ●l小N  
  |i (| ⊂⊃ 、_,、_, ⊂li|ノ  
  | i⌒ヽ j  (_.ノ   ノi|__/⌒) 
  | ヽ  ヽx>、 __, イl |::::ヽ/.
  | ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ  
  | ヾ_:::ッリ :::∨:/ | | >'''´
$ git commit

# Please enter the commit message for your changes.
# (Comment lines starting with '#' will not be included)
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#>      modified:   hello
#
       ____
     /ノ   ヽ、_\  
   /( ○)}liil{(○)\  vi が起動したお!保存も終了もできないお!!
  /    (__人__)   \ 
  |   ヽ |!!il|!|!l| /   |
  \    |ェェェェ|     /


             -‐ '´ ̄ ̄`ヽ、
             / /" `ヽ ヽ  \
         //, '/     ヽハ  、 ヽ 幼稚園からやり直してこい!
         〃 {_{\    /リ| l │ i| i で挿入モード、コミットメッセージを書いて
         レ!小l●    ● 从 |、i| <ESC> で抜けたら ZZ で保存終了だよっ!
          ヽ|l⊃ 、_,、_, ⊂⊃ |ノ│
        /⌒ヽ__|ヘ   ゝ._)   j /⌒i ! ちなみに # で始まる行は削除されるから無視していいんだよっ!
      \ /:::::| l>,、 __, イァ/  /│
.        /:::::/| | ヾ:::|三/::{ヘ、__∧ |
       `ヽ< | |  ヾ∨:::/ヾ:::彡' |
".git/COMMIT_EDITMSG" 13L, 353C 書込み

Created commit bb83222: ⊂二二二( ^ω^)二⊃
 1 files changed, 1 insertions(+), 0 deletions(-)
         ___
       / ⌒  ⌒\
      / (⌒)  (⌒) \   
    /   ///(__人__)/// \ で、できた!
     |   u.   `Y⌒y'´    |  やる夫にもコミットできたお!!
      \       ゙ー ′  ,/   
      /⌒ヽ   ー‐    ィヽ    
      / rー'ゝ       〆ヽ
    /,ノヾ ,>      ヾ_ノ,|
    | ヽ〆        |´ |



           /.:.:.         \
              /:,:.:.:  /   ヽ    \
          /.:.l:.:.:/:/   :/  ', :l   ヾ`ー
            /!:.:.|:.: l/  〃 / j } :|    ハ
        /イ:.:.i|:.:.jL∠/_/ | /l.ム_/| l  l }
         N:.ハ:.:.:lィfアト/ レ ィ=ト | /| ∧j  お疲れさま…
          ヽム:.} ii;_j    ii;リ ル iレヽ.   「インデックスに追加してコミット」これが基本
                `ヘ:ゝ   _     小/     覚えておいて
                  ヾ:{>、 _ ィ<}/|/    
           _, ィr'´ヽ{ ___`} ヽ、_   
         /| l:|   | ===|   |:l゙ヽ   
          /  | l:l   l     l   l::l l
           l  ヽハ    l    l  //  |



     , '´ ̄ ̄` ー-、     
   /   〃" `ヽ、 \    
  / /  ハ/     \ハヘ   
  |i │ l |リノ    `ヽ}_}ハ.  次は過去のコミットを参照する方法だよ!
  |i | 从 ●     ●l小N  
  |i (| ⊂⊃ 、_,、_, ⊂li|ノ  
  | i⌒ヽ j  (_.ノ   ノi|__/⌒) 
  | ヽ  ヽx>、 __, イl |::::ヽ/.
  | ∧__,ヘ}::ヘ三|:::::/l| |',:::::ハ  
  | ヾ_:::ッリ :::∨:/ | | >'''´

やる夫で学ぶ gitcore-tutorial/Inspecting changes