このページで分かること
- 複数の変更から、記録したいものだけを選んでコミットできる
- 1つのコミットに1つの意味を持たせる理由が分かる
- 読み返せるコミットメッセージを書ける
git add .とgit commit -aの落とし穴が分かる
第2部の08で、変更がワークツリー → ステージ → リポジトリと進むことを見ました。このページでは、その流れを使ってあとから読める履歴を作ります。
変更は意味ごとに分けて記録する

ワークツリーに変更が2つあっても、ステージに載せた memo.txt の分だけが1つのコミットになります。todo.txt は次のコミットで別に記録します。
まとめて1回で記録することもできます。それでも分けるのは、コミットが「何のための変更か」の単位になるからです。「卵を追加」と「やることリストを作成」が1つのコミットに混ざると、片方だけを取り消したいとき(第2部の14・15)に、もう片方まで巻き込みます。
実際に分けて記録する
第2部の08の続きです。memo.txt には「卵を買う」の行がまだ記録されずに残っています。そこへ新しいファイルを1つ足します。
cd ~/git-practice
echo "歯医者を予約する" > todo.txt
git status
# 出力:
# On branch main
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git restore <file>..." to discard changes in working directory)
# modified: memo.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
# todo.txt
#
# no changes added to commit (use "git add" and/or "git commit -a")
変更が2つあります。まず memo.txt だけを載せて記録します。
git add memo.txt
git commit -m "買い物メモに卵を追加"
# 出力:
# [main c9990eb] 買い物メモに卵を追加
# 1 file changed, 1 insertion(+)
続けて todo.txt を記録します。
git add todo.txt
git commit -m "やることリストを作成"
# 出力:
# [main 1fe223f] やることリストを作成
# 1 file changed, 1 insertion(+)
# create mode 100644 todo.txt
記録の一覧を1行ずつ表示すると、3つのコミットが新しい順に並びます。
git log --oneline
# 出力:
# 1fe223f やることリストを作成
# c9990eb 買い物メモに卵を追加
# d9110b5 買い物メモを作成
左の7桁は、第1部の05で扱ったハッシュ(コミットのID)の先頭部分です。値は環境ごとに違います。git log の読み方は第2部の11で詳しく扱います。
コミットメッセージの書き方
メッセージは、未来の自分と他人に向けた説明です。何を変えたかは差分を見れば分かりますが、なぜ変えたかは書かないと残りません。
| 書き方 | 例 | 評価 |
|---|---|---|
| 何をしたか分からない | 修正 update あああ |
✕ 一覧で区別できない |
| 何をしたかが分かる | 買い物メモに卵を追加 |
○ 一覧で読める |
| なぜかも分かる | 1行目に要約、空行のあとに理由 | ◎ あとから判断できる |
理由まで書きたいときは、-m を付けずに git commit を実行します。第2部の06で設定したエディタが開くので、次の形で書いて保存し、閉じます。
買い物メモに卵を追加
週末に作るケーキの材料。牛乳と同じ店で買えるので同じメモにまとめた。
1行目は要約、2行目は空行、3行目以降に理由、が Git の慣習です。1行目だけが一覧(git log --oneline など)に表示されるので、1行目だけで何のコミットか分かるようにします。
補足
エディタを閉じずに Git に戻ってしまう、または見慣れないエディタが開いて困った場合は、第2部の06の core.editor の設定を見直してください。慣れるまでは -m だけで十分です。
良いコミットの単位
決まった正解はありませんが、迷ったら次の3つで判断します。
- 1つの意味だけを含む:メッセージを「〜と〜」と書きたくなったら、分けられないか考える
- 区切りのよい状態で記録する:途中で壊れたままの状態をなるべく記録しない
- 小さめに、こまめに:大きな記録はあとから分けられないが、小さな記録はあとからまとめられる(第4部の26)
一括で載せるコマンドの注意点
git add .
git add .
. は「今いるフォルダ以下のすべて」を意味します。変更したファイルも新しいファイルもまとめてステージに載るので便利ですが、意図しないファイルまで記録される原因になります。パスワードを書いた設定ファイルや、作業中の一時ファイルも区別なく載ります。
使う前に必ず git status で一覧を確かめてください。記録したくないファイルを最初から除外する方法は、第2部の12(.gitignore)で扱います。
git commit -a
git commit -a -m "パンを追加"
-a を付けると、git add を省いて「すでに記録したことがあるファイルの変更」をまとめてコミットします。新しく作ったファイルは含まれません。 載せたつもりのファイルが入っていない、という食い違いが起きやすいので、慣れるまでは git add で明示的に選ぶほうが確実です。
よくある疑問
Q. コミットしたあとで、メッセージの誤字や入れ忘れに気づきました。
A. 直前のコミットなら、作り直せます(git commit --amend)。第2部の14で扱います。
Q. nothing to commit, working tree clean と出て、コミットできません。
A. 記録すべき変更が1つもない、という意味です。ファイルを保存し忘れていないか、別のフォルダで作業していないかを確かめてください。
Q. ステージに何も載せずに git commit するとどうなりますか?
A. no changes added to commit と表示され、コミットは作られません。空の記録ができることはありません。
まとめ
- ステージに載せた変更だけが、1つのコミットになる
- 1つのコミットには1つの意味を持たせる。あとから取り消すときの単位になる
- メッセージは1行目に要約、空行のあとに理由を書く
git add .は意図しないファイルも載せる。使う前にgit statusで確かめるgit commit -aは、新しく作ったファイルを含まない
次のページ
10. status・diff で現在地を読む ── 「今どのファイルの、どこが変わっているのか」を、記録する前に自分で確かめる方法を見ます。
この記事の最終確認日: 2026年10月