Try to Write A Better Commit Message5. より良い開発のために
• コミットの内容に規則を設ける
• A commit should be atomic/logical change
• コミット1つ1つの方向性を明確化する
• Don’t mix whitespace changes with the others
• 差分の意味を強調し,なおかつ競合の可能性を下げる
• コミットメッセージに規則を設ける
• Write the intention which makes a change
• 関連チケットや差分内容の根本を明文化する
• Etc. 5
6. より良い開発のために
• コミットの内容に規則を設ける
• A commit should be atomic/logical change
• コミット1つ1つの方向性を明確化する
• Don’t mix whitespace changes with the others
• 差分の意味を強調し,なおかつ競合の可能性を下げる
• コミットメッセージに規則を設ける
• Write the intention which makes a change
• 関連チケットや差分内容を明確化する
• Etc. 6
研究対象
(Git)
7. より良い開発のために
• コミットの内容に規則を設ける
• A commit should be atomic/logical change
• コミット1つ1つの方向性を明確化する
• Don’t mix whitespace changes with the others
• 差分の意味を強調し,なおかつ競合の可能性を下げる
• コミットメッセージに規則を設ける
• Write the intention which makes a change
• 関連チケットや差分内容を明確化する
• Etc. 7
今日はこっ
ち
(Git)
18. 基本フォーマット
• 1行目 : “Subject”
• コミット内容の概略や主題
• 半角で50文字以下 (ログの見やすさのため)
• 2行目 : 空行
• パースに使われるので重要
• N行目 : ”Body” (N ≧ 3)
• コミット内容の詳細
18
24. 書くべきこと – Subject -
• フォーマット (半角で50文字以下)
• Type Targets [and others]
• Type
• コミットの種別を表現する
• この単語で「何をしたのか」が一目で分かるべき
• 英語だと過去形なことが多い
• Targets (and others)
• Typeの対象や操作種別等の補足を行う
• 言語は英語か混合(英+日)が望ましい
24
25. 書くべきこと – Subject -
• フォーマット (半角で50文字以下)
• Type Targets [and others]
• Type
• コミットの種別を表現する
• この単語で「何をしたのか」が一目で分かるべき
• 英語だと過去形なことが多い
• Targets (and others)
• Typeの対象や操作種別等の補足を行う
• 言語は英語か混合(英+日)が望ましい
25
26. Types of a commit
• 基本 : fix : バグ修正,
add : ファイルの追加,
modify : 修正(not fix),
change : 仕様変更,
refactor : リファクタリング,
remove : ファイルの削除,
delete : コメント等の削除,
reformat : コード整形
• 任意 : update : 依存等の更新,
revert : 変更の取り消し,
simplify : 単純化 26
27. Types of a commit
• 基本 : fix : バグ修正,
add : ファイルの追加,
modify : 修正(not fix),
change : 仕様変更,
refactor : リファクタリング,
remove : ファイルの削除,
delete : コメント等の削除,
reformat : コード整形
• 任意 : update : 依存等の更新,
revert : 変更の取り消し,
simplify : 単純化 27
28. 書くべきこと – Subject -
• フォーマット (半角で50文字以下)
• Type Targets [and others]
• Type
• コミットの種別を表現する
• この単語で「何をしたのか」が一目で分かるべき
• 英語だと過去形なことが多い
• Targets (and others)
• Typeの対象や操作種別等の補足を行う
• 言語は英語か混合(英+日)が望ましい
28
29. Targets [and others]
• Typeの対象や補足情報の追加
• Target
• Typeと組み合わせれば「何に何をしたか」が分かる
• And others
• 変更を行う上での行動原理・理由の”概要”を表現する
• E.g.
• チケットNo.9999に関連.AからBへページ遷移すると
きに渡すべきパラメータに無駄があったのでコント
ローラーCを修正.
• Target : コントローラーC
• And others : ムダの排除
29
30. 書くべきこと – Subject -
• フォーマット (半角で50文字以下)
• Type Targets [and others]
• Type
• コミットの種別を表現する
• この単語で「何をしたのか」が一目で分かるべき
• 英語だと過去形なことが多い
• Targets (and others)
• Typeの対象や操作種別等の補足を行う
• 言語は英語か混合(英+日)が望ましい
30
32. Body
• コミットの詳細を記述
• フォーマットは特になし
• コードレビューの補助となる
• 「メッセージとコミットの内容に差があること」は
欠点ではなく,重要な情報のひとつになる
• 可能なら得意言語で書かれるべき
• 書く必要がないことと書けないことは違う
• 書けない場合はWhyの部分が欠けたまま編集をしてし
まった可能性が大きい
32
33. 書くべきこと – Body -
• コミットに対する問への詳細な答えを記述する
• なぜその変更が必要なのか
• どうやってその問題を解決したか
• どんな影響があるか
• どのチケットに関連し,解決するのか etc.
• 上記は最低限
• 当然書けば書くほど情報を足すことができる
• 重要な事項を後ろの方に追いやらないのであれば,気
の済むまで書けばいい
• ファーストセンテンスが主張になるようにする
33
36. まとめ。
• Subject + Bodyで物語を作る
• 素晴らしいメッセージは利用価値が高くなる
• SubjectでWhatを表現
• 目を引くように,簡潔に「何に何をしたのか」
• Format : Type Targets [and others]
• BodyでWhy, Howを表現
• Subjectの背景や修正方法を細かに記述する
• 「主張」はファーストセンテンスで
• Format : 特になし
36
37. おまけ。
• git config --global core.editor emacs
はちゃんとしましょうね!!!
• (VimでもMacVimでも何でもいいけど)
• git commit –m “ほげっ” だとBody書きづらい
• git commitでエディタを起てて書きましょう
37
Editor's Notes Refactoringとバグ修正が混在してrevertしづらい
差分が大きくなり,コードレビューを妨害する
必要な変更か判断できない