在 Github 上面看到這 git-blame-someone-else 專案,用來隨時修改 commit log 作者,也就是可以任意改 commit id 內的 Author
欄位資訊,作者也相當幽默,直接拿此 commit id 改成 Linux 作者 Linus Torvalds。
使用時機
大家會問到什麼時候才會用到需要修改 commit 作者,以我自己的狀況為例,在團隊內開發新功能會直接開新的 Branch 來開發,完成後會進行 code review,此時原開發者目前正在忙其他專案,其他團隊成員就必須幫忙修改原先 commit 內容,通常我是直接建議透過 git reset --soft HEAD^
來更動原本 commit,而不是產生新的 commit,修改後作者就會變成自己,此時後這功能就派上用場了。
安裝方式
根據源專案是透過 root 權限,將執行檔丟到 /usr/loca/bin
目錄底下,但是我個人不建議用這方式,因為還需要 root 權限,要打密碼有點麻煩,我建議透過在家目錄建立 bin
目錄,並將此目錄加到 $PATH
變數內即可。
$ mkdir ~/bin $ wget https://raw.githubusercontent.com/jayphelps/git-blame-someone-else/master/git-blame-someone-else -O ~/bin/git-blame-someone-else $ chmod 755 ~/bin/git-blame-someone-else
修改 .bashrc
,加入底下程式碼
# add bin folder to $PATH. if [ -d "${HOME}/bin" ]; then export PATH=$PATH:${HOME}/bin fi
使用方式
$ git blame-someone-else <author> <commit>
其中 author 格式為 Name <Email>
就可以了,附上執行前後的結果
執行前:
$ git blame-someone-else "appleboy <appleboy@wu-boy.com>" 3adf61fc1605922fd880d98fb94d1f4f5a0a6289
執行後:
最後要強調的是,由於修改 commit Author 會影響整個 Git Source Tree,所以要更新到遠端 Server 像是 Github 的話,就必須強制覆蓋
$ git push origin master -f
使用前請三思。