修改用戶名郵箱
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)慎使用。