作用一名程序員俊戳,我們會(huì)經(jīng)晨⒏叮混跡與不同的代碼倉(cāng)庫(kù),時(shí)常不同倉(cāng)庫(kù)會(huì)有作者信息驗(yàn)證鉴象。
比如公司內(nèi)建的gitlab一般會(huì)要求統(tǒng)一使用公司內(nèi)部的域賬號(hào)簽名忙菠;
github要求使用github賬號(hào)簽名等。
因此纺弊,很容易犯在不同庫(kù)中提交代碼發(fā)現(xiàn)默認(rèn)配置的author信息沒(méi)有變更牛欢,結(jié)果push被拒絕。
下面介紹幾種常用的解決方式淆游,當(dāng)然最終還是需要養(yǎng)成切換代碼庫(kù)檢查author信息的習(xí)慣傍睹,主動(dòng)配置
// 設(shè)置全局
git config --global user.name "Author Name"
git config --global user.email "Author Email"
// 或者設(shè)置本地項(xiàng)目庫(kù)配置
git config user.name "Author Name"
git config user.email "Author Email"
解決方法一:
如果只需要最近一次提交,那么很簡(jiǎn)單直接使用git commit –amend就可以搞定
git commit --amend --author="NewAuthor <NewEmail@address.com>"
解決方法二:
如果是多個(gè)修改犹菱,那么就需要使用到git filter-branch這個(gè)工具來(lái)做批量修改
為了方便大家使用拾稳,封裝了一個(gè)簡(jiǎn)單的shell腳本,直接修改[XXX]中的變量為對(duì)應(yīng)的值即可
#!/bin/sh
git filter-branch --env-filter '
an="$GIT_AUTHOR_NAME"
am="$GIT_AUTHOR_EMAIL"
cn="$GIT_COMMITTER_NAME"
cm="$GIT_COMMITTER_EMAIL"
if [ "$GIT_COMMITTER_EMAIL" = "[Your Old Email]" ]
then
? ? cn="[Your New Author Name]"
? ? cm="[Your New Email]"
fi
if [ "$GIT_AUTHOR_EMAIL" = "[Your Old Email]" ]
then
? ? an="[Your New Author Name]"
? ? am="[Your New Email]"
fi
export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'