gitまわりの環境設定

git config
とりあえず、mizchiさんのXのポストで気になってたのでconfigちゃんと設定しようと思います。
元記事
もともとあったやつに追加などして最終的にこうなった
[alias]
# いい感じのグラフでログを表示
graph = log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s'
# 上の省略形
gr = log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s'
st = status
cm = commit
# Untracked filesを表示せず,not stagedと,stagedだけの状態を出力する
stt = status -uno
# 行ごとの差分じゃなくて,単語レベルでの差分を色付きで表示する
difff = diff --word-diff
# ref https://qiita.com/mizchi/items/dcdc57f748a1d6cc3648
delete-merged-branches = !git branch --merged | grep -v \\* | xargs -I % git branch -d %
[column]
ui = auto
[branch]
sort = -committerdate
[tag]
sort = version:refname
[init]
defaultBranch = main
templatedir = ~/.git_template
[diff]
algorithm = histogram
colorMoved = plain
mnemonicPrefix = true
renames = true
[push]
default = simple
autoSetupRemote = true
followTags = true
[fetch]
prune = true
pruneTags = true
all = true
[pull]
rebase = true
[rerere]
enabled = true
autoupdate = true
[rebase]
autoSquash = true
autoStash = true
updateRefs = true
[merge]
conflictstyle = zdiff3

ghだけは使ってたけどほかのgitツール使ってこなかったのでこれを気に検討してみる。

gh
ghはすでに使ってる。とはいえ、あんまり使ってはないので機会があったら積極的に使っていきたい。
特に新しくリポジトリを作成する時はコード書き始めて後からブラウザのGitHubでリポジトリを作成してたから、ghで予めリポジトリをCLIで作るようにしていこう。

ghq
これは認識はしてたけどあんまり必要性を感じてなかった。
brew install ghq
ためしにプロフィールリポジトリをcloneしてみた
ghq get JY8752
~/ghq/github.com/JY8752/JY8752
にcloneされた。clone先を変えたければ設定すればできそう。
これでどこにcloneするかを考えずにとりあえずghq getしておけばよさそう。
あとはCtl + gでghq getしてきたリポジトリの一覧から選択してそのプロジェクトルートに移動できるようにした。

git-cz
個人的にはあんまり使ってないけど仕事で使うことがある。ちなみに、cz-gitというより軽量化されたものがあるらしいのでそっちを使うと良さそう。
どちらかというと、cz-gitのai commitの機能が一番気になった

aiによるgit commitの自動生成
上述のcz-gitのところで書いたがaiによるcommitの自動生成が気になる。もともと、英語もそんなに得意ではないし、日本語だとしてもコミットメッセージを考えるのは苦手だったのでここは早々にaiにやってもらいたいと思ってた。
cz-git以外にもaicommits, OpenCommit, auto-commitといったものが存在するらしい。
いずれも、OpenAIのAPIキーを設定して、使う感じで完全無料では使えなさそう。とはいえ、大した額ではないのでケチるところではないのかもしれない。
ただ、気づいたらCursorにもcommitメッセージの自動生成機能は実装されていて生成されたメッセージに満足できるかというと微妙だがそれは、そもそもコミットする変更の粒度などの問題が大いにあると思っているのでCursorのせいではないかもしれない。
とりあえず、Cursor課金しているし、頻繁にcommitするような開発スタイルではない(よくない)のでそこまで必須ではないというかそこまで生産性的に変わらんやろと思ったのでとりあえずCursorの自動コミットを使ってみる。

lazy-git
悩んだけどあんまり新しく覚えることは多くしたくなかったので導入はやめた。基本的なgit操作はCLIでやることがほとんどだけど、実行する操作は決まった操作が多いし、zshの補完とかも設定したからそんなに困らなそう。実際、今そんなに困ってないし。
ただ、使ってるとなんかかっこよさそうというのはあるのでいつか導入するかもしれない。

git-nowとかあったな
昔頑張ってgit nowでコミット積んで最後にgit rebase -iするみたいな運用してみようとしたことあるけど早々に心折れたのでやめた。
コミットを綺麗にまとめるにはいい方法だなと思うのだけどあっちもこっちも修正して気づいたら1コミットがまあまあのでかさになることが多いのであんまり自分にはあってない気がしている。
小さく、細かくコミットを積んでいくスタイルには相性が良いんだろうなと思う。それこそ、前述のlazy-gitなんかもそう。そもそもコミットする機会が自分は人より少ないんだと思う。