git修改提交作者和郵箱


轉載的這篇文章:https://blog.csdn.net/diu_brother/article/details/51982993
作用一名程序員,我們會經常混跡與不同的代碼倉庫,時常不同倉庫會有作者信息驗證。比如公司內建的gitlab一般會要求統一使用公司內部的域賬號簽名;github要求使用github賬號簽名等。因此,很容易犯在不同庫中提交代碼發現默認配置的author信息沒有變更,結果push被拒絕。

下面介紹幾種常用的解決方式,當然最終還是需要養成切換代碼庫檢查author信息的習慣,主動配置

// 設置全局
git config --global user.name "Author Name"
git config --global user.email "Author Email"

git config --global user.name "小旋風"
git config --global user.email "1945605733@qq.com"

// 或者設置本地項目庫配置
git config user.name "Author Name"
git config user.email "Author Email"

git config user.name "小旋風"
git config user.email "1945605733@qq.com"

如果是多個修改,那么就需要使用到git filter-branch這個工具來做批量修改
為了方便大家使用,封裝了一個簡單的shell腳本,直接修改[XXX]中的變量為對應的值即可

創建腳本需要的命令鏈接

新建一個.sh文件:
命令:touch test.sh

編輯文件:
命令:vi test.sh
然后鍵入i,輸入內容,
然后鍵入esc
鍵入:wq保存退出

給test.sh賦予可執行權限
命令:chmod +x test.sh 


執行腳本./test.sh,即可執行腳本
也可以通過sh test.sh 執行腳本
腳本內容
#!/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"
'

這是我使用的腳本,替換上面腳本的時候記得把中括號 [] 去掉
我就是沒有把中括號去掉,踩了半個小時坑

#!/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="小旋風"
    cm="1945605733@qq.com"
fi
if [ "$GIT_AUTHOR_EMAIL" = "Your Old Email" ]
then
    an="小旋風"
    am="1945605733@qq.com"
fi

export GIT_AUTHOR_NAME="$an"
export GIT_AUTHOR_EMAIL="$am"
export GIT_COMMITTER_NAME="$cn"
export GIT_COMMITTER_EMAIL="$cm"
'
最后最后

通過git push --force強行推送修改后的 log 信息。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM