仕組み
- ローカルは3つのエリアに分かれている
- ワークツリー
- ステージ
- リポジトリ
- まず、プログラムのファイルの変更等はワークツリーで行う。
-
git add
でそのファイルをステージに追加。 -
git commit
でステージから(ローカル)リポジトリに追加。
1. Gitプロジェクトを作成する
1-1. 試しにgit_tutorial
という名前でディレクトリを作成してGit管理を初期化。
# 今いるディレクトリにgit_tutorialディレクトリを作成する
mkdir git_tutorial
# 作成したディレクトリに移動する
cd git_tutorial
# git管理をはじめる
git init
# Initialized empty Git repository in /hogehoge/git_tutorial/.git/
1-2. 変更をステージに追加する
先ほど作成したgit_tutorial
ディレクトリににtest.md
という名前のファイルを作成して、ステージに追加add
します。
- まずはファイルの作成。
# echoコマンドで出力した文字列をtest.mdファイルに追記する
echo "# ABCD" >> test.md
# 作成されたファイルを確認する
cat test.md
# git_tutorial
- 次にこのファイルをステージに追加。変更をステージに知らせる作業になります。
各用途ごとのコマンドは以下
# ファイルごとにステージに追加する
git add <ファイル名>
# ディレクトリごとステージに追加する
git add <ディレクトリ>
# ワークツリーの変更をすべてステージに追加する
git add .
ここで変更状況の確認を一旦してみます。
現在は、ワークツリーでtest.md
という名前のファイルを作成して、ステージに追加されている状況で、まだローカルリポジトリには反映されていないはず。
そんな時は、
# 変更状況を確認する
git status
まだ、下記のファイルがコミットされていないよとお知らせしてくれる。
ちなみに表示されているgit rm --cached <file>
はそのファイルを削除するコマンドになる。
1-3. ローカルリポジトリにコミットする
git commit
で、ステージに追加されているファイルをローカルリポジトリに反映させます。この作業をして初めて、プログラムの変更のスナップショットがローカルリポジトリに記録される。
git commit -m ‘最初のコミット’
# [main e21164e] ‘最初のコミット’
# 1 file changed, 1 insertion(+)
# create mode 100644 README.md
-m
で、メッセージをつけてコミットできる。
ここで先ほどと同様に、git status
で変更状況の確認をしてみます。
nothing to commit, working tree clean
これは、変更が全てコミットされてるよとのことなのでこれでOK。
1-4. ファイルの内容を修正して変更履歴を確認する
- 先ほど作成してコミットしたファイル
test.md
に文字を追加。 - ステージに登録する前後でワークツリー内での変更を
git diff
コマンドで確認。 - 変更をステージに追加
git add .
- ステージの変更を確認する
# README.mdに変更を追加する
echo "あいうえお" >> test.md
# ワークツリーの変更を確認する
git diff
# 変更をステージに追加する
git add .
# ワークツリーの変更を確認する
git diff
# ステージの変更を確認する
git diff --staged
- 記号は追加された行を示していて、
@@ -1 +1,2 @@ は変更が行われた部分のコンテキストを示している。この場合、元のバージョン(-1)と新しいバージョン(+1,2)の行が変更された意味。
- ステージに追加して、もう一度
git diff
をしてみると何も表示さえれない。このことからもgit diff
はワークツリーで変更してまだステージに登録していない変更内容を表示してくれるコマンドだとわかる。
- 次に
git diff --staged
で、ステージの変更内容が表示される。先ほど登録したにようが表示される。
1-5. 変更履歴を確認する
ここまでのコミットの内容を確認したい場合はgit log
コマンドでログを確認できる。
各用途ごとのコマンドは下記
# コミットログを確認する
git log
# コミットログを一行で表示する
git log --oneline
# ファイル単位でコミットログを確認する
git log -p index.html
# 表示するコミット数を制限する
git log -n <コミット数>
1-6. 削除や移動のコマンド
# ワークツリーとローカルリポジトリからファイルを削除する
git rm <ファイル名>
# ワークツリーとローカルリポジトリからディレクトリを削除する
git rm -r <ディレクトリ名>
# ローカルリポジトリからは削除するが、ワークツリーにはファイルを残したいとき
git rm --cached <ファイル名>
# ファイルの移動をおこなう。`git add`と同じようにこのコマンドでファイルの移動もできる。
git mv <旧ファイル> <新ファイル>
# ファイルを移動する
mv <旧ファイル> <新ファイル>
# 古いファイルの削除
git rm <旧ファイル>
# 新しいファイルを追加
git add <新ファイル>
《感想》
変更のログを記録できるのはとても便利。もしチームで開発するときは、ステージに登録の時点でチーム内で確認するのかな?