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| |',:::::ハ
| ヾ_:::ッリ :::∨:/ | | >'''´