Hatena::ブログ(Diary)

shouhの日記

2015-12-02

Gitのコミット作法(コミット単位とコミットメッセージ)を調べてまとめてみた

コミット作法を知りたかったのでググった。んで検索結果の最初らへんの記事をテキトーに読んで、メモして、自分の解釈(意味の推測)も交えて、まとめてみた。なんとなく作法がわかった気がする。

まとめ

コミット単位について

  • コミットには一つの修正のみ入れる
    • 一つの修正とは「必要最小限で完結した、一つの修正の単位」のこと。暗黙知なのでムズイです
    • コミット一修正かどうか知る目安は、コミットメッセージを要約できるかどうか。出来ない場合は複数コミットに分けなさい

コミットメッセージの書き方について

  • OSSは問答無用で英語(つかそこのルールに従え)
  • 基本的に英語が望ましいが、日本人オンリーの日本語PJなら無理して使わなくてもいいと思う
  • メジャーな書き方は以下のとおり
    • 一行目に要約、二行目は空行、三行目以降に詳細を書く
    • 一行目は prefix と要約内容を書く。prefix は一目で修正内容を知るための単語であり fix, add, change などがある
    • 三行目以降は72文字以内で改行しろ(そうしないとCUIツールから見辛いから)
  • 書式はプロジェクトで統一しろ。統一すればするほど見易くなる
    • prefixを決めるのはもちろんのこと、一文ならピリオド付けないとか、先頭は大文字にするとか、主語は省いて現在時制で書けとか…これくらいの細かさ
  • 自制は現在時制がオススメ(Gitを始め現在時制でメッセージを出すツールが多いからそれに合わせる)

もっとまとめると

以下、まとめる過程で書いたメモ

Writing good commit messages ・ erlang/otp Wiki
https://github.com/erlang/otp/wiki/Writing-good-commit-messages

  • コミット単位
    • 要約するのが難しい場合、複数の修正が入っているので git add -p を使って分けてコミットせよ
  • コミットメッセージ
    • 一行目に要約、二行目は空、三行目以降に詳細
    • 一行目は Fix, Add, Change のいずれかで始めよ(Fixedのようにedを付けてもよい)
    • 一行目は50文字以下
    • 三行目以降は72文字くらいで改行せよ(gitk等のツールでログを見る時にスクロールせずに済むため)

Gitコミットメッセージの書き方 - Qiita
http://qiita.com/itosho/items/9565c6ad2ffc24c09364

  • コミット単位
    • なるべく細かい単位にする
    • 複数の修正を一つのコミットにまとめるな
    • まあ自分なりの哲学を説明できれば良いんじゃね?
  • コミットメッセージ
    • 一行目が要約、二行目は空、三行目は詳細
    • 一行目はコミット種別(fix, add, modifyなど)と要約を書く
    • チケットへの紐付けは三行目以降に
    • 使用言語(日本語? 英語?)と一行目三行目のフォーマットは必ず統一すること

Gitコミットメッセージの書き方 - Hack Your Design!
http://blog.toshimaru.net/git-29764/

  • コミットメッセージ
    • 時制は現在時制を使い、過去形は使わない
      • 例: fix bug は良い、fixed bug はダメ
      • 理由: git コマンドが生成するメッセージも現在時制だから統一した方が美しいのです

atom-house-hackathon/howuse.md at master ・ e-jigsaw/atom-house-hackathon
https://github.com/e-jigsaw/atom-house-hackathon/blob/master/howuse.md

コミットメッセージの書き方 - ククログ(2012-02-21)
http://www.clear-code.com/blog/2012/2/21.html

  • コミットメッセージ
    • 見易さのために文体は統一しろ
      • 一文ならピリオド付けないとか, 先頭大文字にするとか, 主語は省いて現在時制で書けとか, そのレベルで統一する
    • 英語で書け。ソフトウェア界隈では英語が正直なんで、慣れるためにも。

Git - コミットログお作法の資料 - Qiita
http://qiita.com/seizans/items/20899a17cf57f48e4456

  • コミットメッセージ
    • 日本の会社ならOSS以外は日本語で書いてええやろ

2015-04-29

Git(Windows)で HTTP を使うと push 時に毎回認証情報を訊かれるのを防ぐ

Github Pages のリポジトリ(username.github.io)は HTTP プロトコルしか使えないため、push 時などに認証情報を毎回尋ねられてしまう。これを防ぐ手段はないかと思っていたが、あった。

まず、結論を。
wincred を用いる。wincred は Git に同梱されている。

$ git config --global credential.helper wincred

Git for Windows/msysgit で ユーザー名、パスワードの入力頻度を下げる

上記を設定後、コマンドライン上で push を行うと、最初の一回は認証情報が尋ねられるが、その後は尋ねられなくなる。

2014-07-05

改行コードの変換方法を変える

Git では commit 時と checkout 時に、勝手に改行コードの変換を行う仕組みがある。改行コードのプラットフォーム間の違いを気にしないための仕組みだが、場合によってはこれがウザく、挙動を変えたい時もある。

グローバルな設定を変えると影響が大きすぎて辛いので、ローカルリポジトリに対して変更できれば便利だ。普通にできるみたい。

.git/config に以下のような設定を加えればいい。

[core]
	# input : commit 時に crlf から lf に変換する
	# true  : input + checkout 時に lf から (OSの改行コード) に変換する
	#         Windows 使いだと Windows の改行コードである crlf に変換できて便利
	# false : 変換を行わない
	autocrlf = input