コミット前のチェックポイント
ストーリー
「コード書き終わりました!コミットします!」
「ちょっと待って。コミット前に確認することがあるよ」
「え?もう動くのに?」
「『動く』と『コミットして良い』は別だよ。コミットする前の確認を習慣にしよう」
コミット前チェックが必要な理由
コミットはチームに対する「この変更を見てください」という意思表示です。
不完全な状態でコミットすると:
| 問題 | 影響 |
|---|---|
| テストが失敗する状態でコミット | チーム全体のCIが壊れる |
| 機密情報が含まれたままコミット | セキュリティインシデント |
| デバッグコードが残ったままコミット | レビュアーの時間を無駄にする |
| 不要なファイルが含まれたままコミット | リポジトリが汚れる |
テストの実行
コミット前に必ずテストを実行する
bash
# JavaScriptの場合
npm test
# Pythonの場合
pytest
# テスト結果を確認
# ALL PASSED → OK
# FAILED → コミットしてはいけない| チェック項目 | 確認ポイ ント |
|---|---|
| テストが全てパスするか | 1つでも失敗していたらコミットしない |
| 新しい機能にテストがあるか | テストなしの機能を追加していないか |
| 既存のテストが壊れていないか | 自分の変更で他のテストが失敗していないか |
テストがないプロジェクトでも、手動で動作確認してからコミットしましょう。
不要ファイルの確認
git statusで差分を確認する
bash
git status出力をよく確認しましょう:
Changes to be committed:
modified: src/main.js ← 意図した変更?
new file: src/utils.js ← 意図した新規ファイル?
Untracked files:
node_modules/ ← コミットしてはいけない!
.DS_Store ← コミットしてはいけない!
debug.log ← コミットしてはいけない!
| チェック項目 | 確認ポイント |
|---|---|
| 意図しないファイルがないか | git status で確認 |
| .gitignoreが適切か | node_modules、.env等が除外されているか |
| 一時ファイルが含まれていないか | ログファイル、キャッシュ等 |
.gitignoreに含めるべきファイル
# .gitignore の例
node_modules/
.env
.DS_Store
*.log
dist/
coverage/
機密情報のチェック
絶対にコミットしてはいけないもの
| 種類 | 例 |
|---|---|
| パスワード | password = "abc123" |
| APIキー | API_KEY = "sk-xxxxx" |
| アクセストークン | token = "ghp_xxxxx" |
| データベース接続文字列 | DB_URL = "postgres://user:pass@..." |
| 秘密鍵ファイル | *.pem, *.key |
確認方法
bash
# コミット対象の差分を確認
git diff --cached
# 以下のようなキーワードがないか目視確認
# password, secret, key, token, credential一度でもコミットした機密情報は、履歴に残ります。
git pushした後では取り返しがつかないため、コミット前の確認が重要です。
デバッグコードの確 認
残してはいけないもの
javascript
// × コミット前に削除すべき
console.log("debug: ここに来た");
console.log("data:", JSON.stringify(data));
debugger;
// TODO: あとで消す
alert("テスト");確認方法
bash
# 変更差分を確認
git diff --cached
# console.logを検索
git diff --cached | grep "console.log"
# debuggerを検索
git diff --cached | grep "debugger"コミットメッセージの品質
良いコミットメッセージの書き方
bash
# × 悪い例
git commit -m "修正"
git commit -m "いろいろ変更"
git commit -m "fix"
# ○ 良い例
git commit -m "ログイン時のバリデーションエラーを修正"
git commit -m "ユーザー検索APIのレスポンス形式を変更"
git commit -m "新規登録画面にメールアドレス確認フィールドを追加"| チェック項目 | 確認ポイント |
|---|---|
| 何を変更したか伝わるか | 「修正」ではなく具体的な内容 |
| 1つのコミット = 1つの変 更か | 複数の変更を混ぜていないか |
| チームのルールに従っているか | プレフィックスなどの規約 |
コミット前チェックリスト(完全版)
markdown
## コミット前チェックリスト
### 必須(1つでも×なら絶対にコミットしない)
- [ ] テストが全てパスしている
- [ ] 機密情報(パスワード、APIキー等)が含まれていない
- [ ] .envファイルがコミット対象に含まれていない
### 重要
- [ ] git statusで意図しないファイルがないか確認した
- [ ] 不要なデバッグコード(console.log等)を削除した
- [ ] コミットメッセージが変更内容を適切に表している
- [ ] 1つのコミットに1つの変更だけが含まれている
### 推奨
- [ ] git diffで変更内容を自分で確認した
- [ ] コーディング規約に準拠している
- [ ] コミットメッセージがチームのルールに従っているまとめ
| カテゴリ | 重要ポイント |
|---|---|
| テスト | 全てパスしてからコミット |
| 不要ファイル | git statusで確認、.gitignoreを活用 |
| 機密情報 | パスワード、APIキーは絶対にコミットしない |
| デバッグコード | console.log、debuggerを削除 |
| コミットメッセージ | 具体的に、1コミット1変更 |
チェックリスト
- コミット前チェックの重要性を理解した
- git statusとgit diffで確認する習慣がイメージできた
- 機密情報をコミットする危険性を理解した
次のステップへ
コミット前のチェックポイントが理解できましたか?
次のセクションでは、実際にチェックリストを作成する演習に挑戦します。 ここまで学んだ知識を使って、自分だけのチェックリストを作りましょう。
推定読了時間: 30分