ちなみに

火曜日の空は僕を押しつぶした。

Gitの設定を見なおした

先日ホットエントリーに上がっていた以下の記事を読んでやる気を出して整理した。

jvns.ca

記事からは以下を取り入れて、あとは不要なものを消したりして回った。

  • branch.sort -committerdate
    • ブランチをコミット時刻で並べる
  • diff.algorithm histogram
  • rebase.autosquash = true
    • rebase するときに --autosquash って書かなくてよくなるやつ

最終的には見せていいところだけ残して以下のようになった。

[ghq]
    root = ~/local/src
[alias]
    c = commit
    b = branch
    d = diff
    di = diff --cached
    st-pull = !git stash && git pull && git stash pop
    tags = tag -l
    remotes = remote -v
    open = !gh browse -b $(git symbolic-ref --short HEAD)
    ls-conflict = !git ls-files -u | cut -f2 | uniq
    bang = !git clean -df && git reset --hard
    # `com` from: https://motemen.hatenablog.com/entry/2022/04/git-aliases
    com = "!f() { remote_head=$(git symbolic-ref --quiet refs/remotes/origin/HEAD); remote_head=${remote_head#refs/remotes/origin/}; git switch ${remote_head:-$(git rev-parse --symbolic --verify --quiet main || git rev-parse --symbolic --verify --quiet master)}; }; f"
    xom = com
[rerere]
    enabled = true
[commit]
    gpgsign = true
[core]
    fsmonitor = true
    untrackedCache = true
    ignorecase = false
[rebase]
    autosquash = true
[diff]
    algorithm = histogram
    submodule = log
[status]
    submoduleSummary = true
[branch]
    sort = -committerdate

この設定なんだっけとなったら GitHub Copilot に聞けばよいので設定ファイルの整理がめちゃくちゃ捗るようになった。

ちなみに仕事用の設定は includeIf を使って別のファイルを読み込んでいる。この辺りは ghq handbook の説明が分かりやすいです。