おはようございます、YASUです。
Gitを学んでいて、多くの人が最初につまずくポイントの一つが「ステージング」だと思います。「編集→ステージング→コミット」という流れは知識としては理解できても、実際のイメージがなかなか掴めない。今日はそのステージングを、できるだけイメージしやすい形で整理してみます。
目次
結論
ステージングは「引っ越しの荷造り箱」だとイメージすると分かりやすいです。編集したファイルの中から「今回のコミットに入れるものだけ」を選んで箱に詰める作業、それがステージングです。
3つの場所があると考える
- ワーキングディレクトリ(作業机の上):実際にファイルを編集している場所
- ステージングエリア(荷造り箱):「次のコミットに入れる」と選んだ変更だけを一時的に置いておく場所
- リポジトリ(倉庫):コミットされて、履歴として確定・保存された場所
なぜ「箱」を挟む必要があるのか
例えば a.tf、b.tf、c.tf の3つのファイルを編集したとします。でも今回のコミットに含めたいのは a.tf と b.tf だけで、c.tf はまだ作業途中だから今回は含めたくない、ということがよくあります。
git add a.tf b.tf # この2つだけ箱に詰める
git commit # 箱の中身だけを倉庫に運ぶ
こうすることで、c.tf は編集済みだけどまだステージングされていない=次のコミットには含まれない、という状態を作れます。もしステージングという仕組みが無かったら、編集した瞬間に全部がそのままコミットされてしまい、「このファイルはまだ入れたくなかったのに」ということができなくなります。
実際に手を動かしてみる
言葉で理解しても、やっぱり実際に触ってみないとイメージが定着しないので、簡単な練習用コマンドを置いておきます。
# 適当なファイルを2つ編集
echo "test1" > a.txt
echo "test2" > b.txt
# git status で確認 → 両方とも「未追跡」の状態が見える
git status
# 片方だけステージング
git add a.txt
# もう一度 git status → a.txtは「ステージング済み」、b.txtは「未追跡のまま」
git status
# ステージングした分だけコミット
git commit -m "test commit"
# また git status → b.txtだけが残っている状態が見える
git status
ポイントは、毎回 git status を打って、状態がどう変わるかを目で追うことです。「今どこにいるか」を都度確認する癖をつけると、机の上・箱の中・倉庫、という3つの場所の感覚が自然と身についてきます。
まとめ
- ステージングは「今回のコミットに何を含めるか」を選ぶための荷造り箱
- 編集(机の上)→ git add(箱に詰める)→ git commit(倉庫に運ぶ)の3段階
- 知識として理解しても、実際に
git statusを打ちながら手を動かすとイメージが定着しやすい
それでは、また明日!

コメント