作用一名程序員,我們會經常混跡與不同的代碼倉庫,時常不同倉庫會有作者信息驗證。比如公司內建的gitlab一般會要求統一使用公司內部的域賬號簽名;github要求使用github賬號簽名等。因此,很容易犯在不同庫中提交代碼發現默認配置的author信息沒有變更,結果push被拒絕。
下面介紹幾種常用的解決方式,當然最終還是需要養成切換代碼庫檢查author信息的習慣,主動配置
// 設置全局 git config --global user.name "Author Name" git config --global user.email "Author Email" // 或者設置本地項目庫配置 git config user.name "Author Name" git config user.email "Author Email"
解決方法一
如果只需要最近一次提交,那么很簡單直接使用git commit –amend就可以搞定
git commit --amend --author="NewAuthor <NewEmail@address.com>"
解決方法二
如果是多個修改,那么就需要使用到git filter-branch這個工具來做批量修改
為了方便大家使用,封裝了一個簡單的shell腳本,直接修改[XXX]中的變量為對應的值即可
#!/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" '