Gitの設定をいろいろ調べていたら良い感じになったので公開してみる。

2 min読了の目安(約1800字TECH技術記事

こんな感じになりました。

[core]
	autocrlf = input
[fetch]
	prune = true
	pruneTags = true
[format]
	pretty = fuller
[gc]
	pruneExpire = now
[init]
	defaultBranch = main
[log]
	abbrevCommit = true
	date = iso
[pull]
	rebase = true
[rebase]
	abbreviateCommands = true
	autoSquash = true
	autoStash = true
[status]
	showStash = true

設定項目の要約

  • fetch.prune
  • fetch.pruneTags
    デフォルトではfetch時にリモートから削除されたブランチやタグをローカルに反映しません。
    本来であれば明示的なオプション(--prune)が必要ですが、trueにしておく事によりオプション要らずでローカルに反映されるようになります。

リモートからタグが削除されたというケースはめったに聞きませんが、両方trueにしておく事をオススメします。


  • format.pretty
    log/show/whatchanged の表示書式を最初からセットしておけます。
    対応している書式は以下の通り。デフォルトはmediumです。
    • oneline
    • short
    • medium
    • full
    • fuller
    • reference
    • email
    • raw
    • format:<string>
      format:<string> の文字列を見て何か感づいた方。
      実はエイリアスにしなくても最初からカスタム書式を適用した状態にできます。

  • gc.pruneExpire
    デフォルトでは2週間以上参照されなかったオブジェクトのみが削除されます。
    「now」をセットしておくと猶予なしに削除されます。

  • init.defaultBranch
    言わずもがな。デフォルトのブランチ名を変更します。

  • log.abbrevCommit
    log/show/whatchanged で表示されるハッシュ値を短いタイプへ置き換えます。[1]
    画面占有率を下げるだけでなく、cherry-pickなどハッシュを使用するコマンドでのタイピング量が減ります。
  • log.date
    日本人には読みにくいあの日時表記を変更できます。「iso」をセットする事をオススメします。
    「relative」とセットすると「3 days ago」のような表記になります。

  • pull.rebase
    pull実行時の動作をmergeからrebaseに変更します。使わないのですが念のため。

  • rebase.abbreviateCommands
    これが
pick deadbee The oneline of the commit
pick fa1afe1 The oneline of the next commit
...

こうじゃ!

p deadbee The oneline of the commit
p fa1afe1 The oneline of the next commit
...

純粋にタイピング量が減るだけじゃの。

  • rebase.autoSquash
    git commit --fixup <hash> で追加したコミットを該当コミットの位置まで自動で移動してくれます。
  • rebase.autoStash
    作業途中でrebaseすると、本来ならエラーになってしまうところを自動でStashに避難させて処理を継続してくれます。

  • status.showStash
    git status 実行時にStashにあるコミット数を一緒に表示してくれます。

参考資料

git-config Documentation

脚注
  1. デフォルトで--abbrev-commitが有効になります ↩︎