Featured image of post 應用codegpt快速產生commit

應用codegpt快速產生commit

E世代最ㄅㄧㄤˋ的事情,就是用chatGTP寫commit ,如果有人看不懂,哇哩咧,你們就真的是LKK了。

在新的公司裡面,對於commit 還有分支其實是沒啥規範的,如果我資策會剛畢業,應該會覺得這家公司沒有規範,但我現在會覺得不規範可能也是好事,畢竟我實際去工作時,真的會去翻commit 的次數少之又少。

但時間久了發現這樣也有些問題,比如說我會有很多commit 是

1
2
3
4
5
6
7
log 
log 
log
log 看看問題
看看變數是啥
log
log

這種基本上沒啥用的資訊,我看了也會有點不好意思,再加上之前有同事問我這段code改了什麼,結果我只有寫一個「錯誤修正」就commit出去了,當下還是有點難堪的。

the-simpsons-homer-gif

後來曾經有段時間想要認真把commit 內容寫一下,但有時候又沒什麼好靈感,不知道寫什麼,心裡就想著

「ChatGPT這麼屌,怎麼不讓他來幫我寫 commit 」

無獨有偶,網路上就有一位大神寫了個lib,可以用來產生git commit 的內容

用 ChatGPT 自動幫開發者產生 Commit Message

安裝

安裝方式在GIthub的README中有連結

1
2
brew tap appleboy/tap
brew install codegpt

安裝好後可以輸入

1
codegpt version

來查看版本

image-20240426213306426

設定

Codegpt 安裝完後需要設定一些參數,比如說openAI的token,這部分就需要花新台幣購買,我是買5鎂的token來用,目前用了快一個月,大概消耗0.2鎂而已,相當划算

https://platform.openai.com/settings/organization/general

image-20240426213658147

設定api key

1
2
codegpt config set openai.provider "openai"
codegpt config set openai.api_key "sk-xxxxxxx"

然後還有一些設定,可以在

1
vim $HOME/.config/codegpt/.codegpt.yaml

中設定,比如說

image-20240426214346850

設定commit 語言

1
codegpt config set output.lang "zh-tw"

設定git_diff的行數

1
codegpt commit --preview --diff_unified 1

這參數會決定codegpt會幫你產生的comit訊息的準確度,像藍色的部分就是抓5行的code,所以可能會包括你沒寫的內容,而選擇1的話就是紅色的部分,會產生較為精準的commit (參照before & after)

image-20240426215222422

使用

使用

1
codegpt commit

自動產生commit訊息

或是輸入

1
codegpt commit --preview

來預覽

iShot_2024-04-26_22.00.00

當然也可以透過git hook來使用

使用GitHook來調用codegpt(不推薦)

輸入安裝

1
codegpt hook install

輸入解除安裝

1
codegpt hook uninstall

這個指令會在你專案的 .git/hooks底下產生一個 prepare-commit-msg

image-20240426221843383

內容如下

1
codegpt commit --file $1 --preview

如此一來,我們每次輸入

git commit 時,就會自動呼叫codegpt幫我們產生commit 了

iShot_2024-04-26_22.17.51

但這其實有個問題,prepare-commit-msg這個hook,會在所有執行git commit的操作後執行,當然也包刮pull跟merge,像這些時候我們是不需要調用codegpt 的功能的,但我研究了一下git hook發現沒有這個功能,經過了幾天的研究,發現要滿足我的需求只能透過bash alias,詳見下篇

  1. 當我需要時才調用codegpt commit,我也要保留 git commit 的功能
  2. merge跟pull時都不要調用codegpt
  3. 我要能夠編輯codegpt 的commit內容,不能直接幫我儲存

將codegpt 做成alias 來調用codegpt(推薦)

編輯 bashrc

1
vim ~/.bash_profile

將這段複製上去

1
alias auto-commit='codegpt commit && git commit --amend'

image-20240426222405688

然後儲存,回到terminal中重新刷新

1
source ~/.bash_profile

如此一來當

1
git add .

後,就能夠輸入

1
auto-commit

來執行codegpt了喔

iShot_2024-04-26_18.32.34

Licensed under CC BY-NC-SA 4.0