Git 配置文件分為三級(jí),系統(tǒng)級(jí)(–system)仍源、用戶(hù)級(jí)(–global)和目錄級(jí)(–local),三者的使用優(yōu)先級(jí)以離目錄 (repository)最近為原則哗总,如果三者的配置不一樣,則生效優(yōu)先級(jí) 目錄級(jí)>用戶(hù)級(jí)>系統(tǒng)級(jí)倍试,可以通過(guò) git config --help 查看更多內(nèi)容讯屈。
系統(tǒng)級(jí)配置存儲(chǔ)在 /etc/gitconfig 文件中,可以使用 git config --system user.name "jim" ,git config --sytem user.email "jim.jim@gmail.com" 來(lái)進(jìn)行配置县习,該配置對(duì)系統(tǒng)上所有用戶(hù)及他們所擁有的倉(cāng)庫(kù)都生效的配置值涮母。
用戶(hù)級(jí)存儲(chǔ)在每個(gè)用戶(hù)的 ~/.gitconfig 中,可以使用 git config --global user.name "jim" ,git config --global user.email "jim.jim@gmail.com" 來(lái)進(jìn)行配置躁愿,該配置對(duì)當(dāng)前用戶(hù)上所有的倉(cāng)庫(kù)有效叛本。
目錄級(jí)存儲(chǔ)在每個(gè)倉(cāng)庫(kù)下的 .git/config 中,可以使用 git config --local user.name "jim" , git config --local user.email "jim.jim@gmail.com" 來(lái)進(jìn)行配置彤钟,只對(duì)當(dāng)前倉(cāng)庫(kù)生效来候。
如果上次提交 msg 錯(cuò)誤/有未提交的文件應(yīng)該同上一次一起提交,需要重新提交備注:git commit --amend -m 'new msg'
修改上次提交的 author逸雹、email可以使用 :git commit --amend --author="newName <newEmail>"
修改整個(gè)歷史記錄中的某些錯(cuò)誤的 author营搅、email有兩種方式 git rebase 或者 git filter-branch
# git rebase 模式
git rebase -i -p 76892625a7b126f4772f8d7e331ada3552c11ce1
# 彈出編輯器,在需要修改的 commit 處 由 picked 改變?yōu)?edit 梆砸,然后 wq 退出 vim转质;
git commit --amend --author 'newName <newEmail>'
# 執(zhí)行后即變更了相應(yīng)的 author 和 email
git rebase --continue
git rebase 模式需要理解 git 的操作原理,步驟也比較多帖世,可以直接使用 git filter-branch快速方便
# git filter-branch 模式 https://help.github.com/articles/changing-author-info/
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags