今回やること
この記事では、複数の変更を1つにまとめず、意味のある単位でcommitに分ける練習をします。
小さなcommitは、レビューしやすく、問題が起きたときに戻しやすいです。
前提条件
- Gitリポジトリがある
git status、git diff、git addが使える- 学習用のファイルで試す
Step 1: 2種類の変更を作る
READMEとコードを同時に変更した状態を作ります。
echo "## Setup" >> README.md
echo "console.log('hello git');" > app.js
状態を確認します。
git status
Step 2: 差分を確認する
git diff
README変更とコード追加が混ざっています。このまま git add . してcommitすると、目的が2つ入ったcommitになります。
Step 3: READMEだけステージする
git add README.md
ステージ済み差分を確認します。
git diff --staged
READMEの変更だけが入っていれば問題ありません。
Step 4: README変更をcommitする
git commit -m "docs: add setup section"
Step 5: 残りの変更を確認する
git status
git diff
まだ app.js の変更が残っています。
Step 6: コード変更をcommitする
git add app.js
git diff --staged
git commit -m "feat: add initial app script"
これで、README変更とコード変更を別々のcommitに分けられました。
Step 7: 履歴を見る
git log --oneline
2つのcommitが別々に表示されます。
commitを分けると、履歴を読んだときに変更目的が追いやすくなります。
よくあるエラー
| 状況 | よくある原因 | 確認すること |
|---|---|---|
| 全部1commitに入った | git add . した | ファイル単位でaddする |
| commitに入る内容がわからない | staged差分を見ていない | git diff --staged を見る |
| 分けすぎた | 1行ごとにcommitしている | 目的単位でまとめる |
| 関係ない整形が混ざる | フォーマットが同時に走った | 整形commitを分ける |
まとめ
commitは意味のある単位で分けます。README変更とコード変更、機能追加と整形、実装とテストなどは、必要に応じて分けると履歴が読みやすくなります。git add ファイル名 と git diff --staged を使い、次のcommitに入る内容を確認します。