🌲

【Git】綺麗なcommitを作りたい

2024/09/26に公開

git初心者でpush pull以外の操作が?って感じだったけど以下を知って幅が広がったのでメモ

後から見て何をしたかわかるcommitメッセージを

もちろん属するチームによって何が良いかは変わるが一例を記す

  1. prefixをつける

https://www.conventionalcommits.org/ja/v1.0.0/

prefix 意味
feat 新しい機能の追加
fix 既存のものの修正
  1. issue番号を含める
    github等で元となったissueを探しやすい


以下だと後から見た時に120番のissueに基づいてGET /usersを新しく実装したんだと分かる

feat: #120: GET /usersの実装

commitをまとめる (--fixup)

さて上のようにコミットを分けていると途中で
「前にしたコミットにこれも追加しないと!」
ってなった時使います.

  1. まず今どこにいるかの確認
    HEADがついているcommitが今自分がいるところ
    f17f1fdとかの列がcommitハッシュって言ってcommitの識別子的なやつ
> git log --oneline

f17f1fe (HEAD -> #branch名) 3つ目のcommitメッセージ
37ce112 2つ目のcommitメッセージ
3c3f324 1つ目のcommitメッセージ
  1. fixupコミットを作る
    --fixupの後にまとめたい先のcommitハッシュを書く
    もし2つ目のcommitにまとめたいなら
> git commit --fixup 37ce112

するとfixupがついたコミットが作成される

> git log --oneline

25f2b23 (HEAD -> #branch名) fixup! 2つ目のcommitメッセージ
f17f1fe 3つ目のcommitメッセージ
37ce112 2つ目のcommitメッセージ
3c3f324 1つ目のcommitメッセージ
  1. リベースする
    今回2つ目のコミットにまとめたかったのでHEADから数えて3つまでを選択(HEAD~3のとこ)
> git rebase --autosquash -i HEAD~3

するとvimのエディタが開くので

~~
fixup 2つ目のcommit
~~

となっているのを確認して:qで閉じる(vimの操作は適宜調べてください)

  1. 確認
> git log --oneline

29ca3d5 3つ目のcommitメッセージ
88cd21e 2つ目のcommitメッセージ
3c3f324 1つ目のcommitメッセージ

commitメッセージを修正する

下の記事がわかりやすいので書くことないです
https://www.granfairs.com/blog/entry-3159/

結論

こまめにgit log --onelineでログを見るようにすると理解が深まった
いいコミットはチームによって違うのでその場その場に合わせるように

Discussion