「addする」「コミットする」について

とりあえず

## sampleリポジトリへ移動
$ pwd
/c/repos/sample
## app/sample.txt を編集
## ここではファイル内に「sample」という文字を記載した
## ステータスを見る
$ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git chackout -- <file>..." to discard changes in working directory)
# 
#       modified:   sample.txt
# 
no changes added to commit (use "git add" and/or "git commit -a")
## 差分を見る
$ git diff
diff --git a/app/sample.txt b/app/sample.txt
index e69de29..eed7e79 100644
--- a/app/sample.txt
+++ b/app/sample.txt
@@ -0,0 +1 @@
+sample
\ No newline at end of file

ここで見ている差分は「HEAD」と「実ファイル内」の差分。
確かに更新した箇所が差分として表示された。

## 「addする」
$ git add .
## ステータスを見る
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
# 
#       modified:   sample.txt
# 
## ここで、またファイル内容を変更する
## 例として、変更前「sample」→変更後「sample text」
## 差分を見る
$ git diff
diff --git a/app/sample.txt b/app/sample.txt
index eed7e79..679aa53 100644
--- a/app/sample.txt
+++ b/app/sample.txt
@@ -1 +1 @@
-sample
\ No newline at end of file
+sample text
\ No newline at end of file
## 「addする」でaddした時点での差分を見る
$ git diff --cached
diff --git a/app/sample.txt b/app/sample.txt
index e69de29..eed7e79 100644
--- a/app/sample.txt
+++ b/app/sample.txt
@@ -0,0 +1 @@
+sample
\ No newline at end of file

「addする」というのはステージングへファイルの変更内容(コミットする内容)を保存する行為のようなもの、らしい。
「HEADと実ファイルの差分」を見るときは「git diff」コマンドで。
「addした内容(コミット準備された内容)」を見るときは「git diff」コマンドに「--cached」オプションを付けた「git diff --cached」で見れる。

## コミットする
$ git commit -m 'add text'
## 差分を見る
$git diff
diff --git a/app/sample.txt b/app/sample.txt
index eed7e79..679aa53 100644
--- a/app/sample.txt
+++ b/app/sample.txt
@@ -1 +1 @@
-sample
\ No newline at end of file
+sample text
\ No newline at end of file
## 「addする」でaddした時点での差分を見る
$ git diff --cached
## 表示結果なし

コミットすると、コミット準備の内容が消えるので「git diff --cached」で何も表示するものがなくなっている状態となる。

ステータスを見た際にファイルしか表示されない理由

そもそもGitでは空のディレクトリはコミットされない。あくまでファイルを管理するものであり、空のディレクトリなぞコミットしても意味が無いから、らしい。

この辺は「入門git」の45ページにある「空のディレクトリを追跡する」を読めばいいと思った。多分。

コミットログを見る

ログを見るコマンド

$ git log

件数を指定してログを見る(例:1件、3件、10件)

$ git log -1
$ git log -3
$ git log -10

ブランチ作る

「master」から「br01」というブランチを作成

$ git branch br01 master

「master」から作成したブランチ「br01」へ移動

$ git checkout br01
Switched to branch 'br01'
$ git status
# On branch br01

「master」からブランチ「br02」を作成し移動

$ git status
# On branch master
$ git checkout -b br02 master
Switched to a new branch 'br02'
$ git status
# On branch br02

そうだ、ここで気をつけなければいけないのは、ブランチを作成してもそれぞれに該当するディレクトリが作成されるわけではない、という事。

ブランチの確認

$ git branch
  br01
* br02
  master

「*」は自分が「br02」にいることを示す。

マージ

「br02」での更新内容を「master」へ反映させる。

##「br02」でファイルを更新
$ echo 'br02 test' > sample.txt
## 「br02」へコミット
$ git add .
$ git commit -m 'br02 test'
## マージ先へ移動
$ git checkout master
## マージする
$ git merge br02
## マージされたコミットログがあることを確認
$ git log -1
Author: kmizukix <kmizukix@hogehage>
Date:   Thu Dec 31 05:20:29 2009 +0900
 
    br02 test

msysgitの起動

なんで最後になったのか不思議。

git -bash

自分の環境ではこれが認識されなかった。何かミスったくさいが気にしない。

msysgitのインストール先にある「C:\msysgit\msysgit\msys.bat」これを叩けば起動した。


今日はここまで