修改用戶名郵箱
git config user.name "newName"
git config user.email "newEmail"
git config
后面加上--global
可以使配置在全局生效,否則僅在本git-repo生效。
但是這種修改方式只能對未來的commit生效镇饺,過去的commit的用戶名郵箱信息是不會改變的听诸,而對已提交的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時驗證用戶信息的儒溉,所以可以只修改第一個。
其中ref
是起始commit的sha-1的簡寫发钝,指定生效范圍為此commit(exclude)到HEAD(include)顿涣,避免對整個git的提交歷史的修改波闹,可以縮短運行時間。
這一方法不知會不會影響已push過的commit涛碑,不過一般都是因為用戶名沒有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
,不明原理揉阎,但加上了確實管用庄撮,謹慎使用。