git中 修改已提交的commit的用戶名郵箱

修改用戶名郵箱

git config user.name "newName"
git config user.email "newEmail"

git config后面加上--global可以使配置在全局生效,否則僅在本git-repo生效。
但是這種修改方式只能對(duì)未來的commit生效,過去的commit的用戶名郵箱信息是不會(huì)改變的,而對(duì)已提交的commit修改的方法如下。

修改已提交commit的用戶名郵箱

修改最近一次

git commit --amend --author="userName <userEmail>"

注意不能缺少< >
此指令僅能更新最近的一次commit的用戶名郵箱

批量修改

git filter-branch --env-filter '
if [ "$GIT_AUTHOR_NAME" = "oldName" ]
then
export GIT_AUTHOR_NAME="newName"
export GIT_AUTHOR_EMAIL="newEmail"
fi
' ref..HEAD

git filter-branch --env-filter '
if [ "$GIT_COMMITTER_NAME" = "oldName" ]
then
export GIT_COMMITTER_NAME="newName"
export GIT_COMMITTER_EMAIL="newEmail"
fi
' ref..HEAD

分別修改AUTHOR_NAME和COMMITTER_NAME,不太清楚二者的區(qū)別。
好像GIT_AUTHOR是用來在push時(shí)驗(yàn)證用戶信息的,所以可以只修改第一個(gè)。
其中ref是起始commit的sha-1的簡(jiǎn)寫,指定生效范圍為此commit(exclude)到HEAD(include),避免對(duì)整個(gè)git的提交歷史的修改,可以縮短運(yùn)行時(shí)間。
這一方法不知會(huì)不會(huì)影響已push過的commit,不過一般都是因?yàn)橛脩裘麤]有push權(quán)限,才需要糾正commit的用戶名,所以無需在意。

如果提示

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

可以加上-f,即git filter-branch -f --env-filter,不明原理,但加上了確實(shí)管用,謹(jǐn)慎使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容