読者です 読者をやめる 読者になる 読者になる

Gitの基礎練習 add commit

昨日に引き続きGitを使ってみたメモ

使ってみて考えたこと

  • add して commit という流れにまだ慣れない
    • CVSSVNは使ったことあるけど commit 一発
  • add 〜 commit 間でさらに更新したら?
  • さらに、そのまま add せず commit したら?


わからないことはやってみるべし
※昨日の状態からの続き。

ファイル更新

$ cat hoge.txt
hogehoge
fugafuga
hogefuga ※追加した

$ git diff
diff --git a/hoge.txt b/hoge.txt
index 2471f6d..dbd2fc8 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,2 +1,3 @@
hogehoge
fugafuga
+hogefuga

インデックス更新

$ git add hoge.txt

$ git diff --cached
diff --git a/hoge.txt b/hoge.txt
index 2471f6d..dbd2fc8 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,2 +1,3 @@
hogehoge
fugafuga
+hogefuga ※git diffの結果と同じ → インデックス=ワーキングツリー

ファイル更新&確認

$ cat hoge.txt
hogehoge
fugafuga
foobar ※更新した

$ git diff
diff --git a/hoge.txt b/hoge.txt
index dbd2fc8..0bbb31c 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,3 +1,3 @@
hogehoge
fugafuga
-hogefuga
+foobar

$ git diff --cached
diff --git a/hoge.txt b/hoge.txt
index 2471f6d..dbd2fc8 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,2 +1,3 @@
hogehoge
fugafuga
+hogefuga ※前回の結果と変わらず=ワーキングツリーの更新を認識していない

この状態でコミット

$ git commit -m "Add new text"
[master 2c7401e] Add new text
1 files changed, 1 insertions(+), 0 deletions(-)

$ git diff
diff --git a/hoge.txt b/hoge.txt
index dbd2fc8..0bbb31c 100644
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,3 +1,3 @@
hogehoge
fugafuga
-hogefuga
+foobar ※ワーキングツリーの状態は変わってない

ここまでのまとめ

  • ファイル更新時の状態
    • HEAD = インデックス != ワーキングツリー
    • add 時の状態
    • HEAD != インデックス = ワーキングツリー
  • add 〜 commit間でさらに更新したら?
    • HEAD != インデックス != ワーキングツリー
  • さらに、そのまま add せず commit したら?
    • HEAD = インデックス != ワーキングツリー

まだ add して commit するメリット(理由)について、ぼんやりとか感じられてないなあ。
SVNとかと比べて一手間増えてるだけに思えてしまう。
もう少し使ってみたら、何かわかるかな?