【Git】git的提示

在今天看我的github倉庫的時候,意外發現我的貢獻率很少,只有在創建倉庫的時候才顯示貢獻率,我感到很奇怪,明明這幾天天天提交啊,遇事不決百度谷歌,原來是因爲git初始化設定時沒有設定正確的用戶名和郵箱(主要是郵箱)
於是輸入命令查看用戶名和郵箱

git config user.name
git config user.email

然後發現我的email與github上記錄的不一樣,怪不得我以前小綠點一直很少,因爲完全沒記進去。也怪我調github 桌面版的時候改了push的郵箱,本以爲沒什麼關係,結果git判斷我不是我的github主人呀

git config--global user.name "your name"
git config--global user.email "your email"

問題解決了,不過我曾經那些記錄都沒了豈不是很不爽,所以在網上找到一個方法,分享給大家

使用腳本來改變某個repo的Git歷史
我們已經創建了一個腳本,使用正確的姓名和電子郵件地址提交後,你以前提交的所有的commits中的作者信息及提交者字段中的舊的用戶名和郵箱地址都將被更正	
注意: 執行這段腳本會重寫 repo 所有協作者的歷史。完成以下操作後,任何 fork 或 clone 的人必須獲取重寫後的歷史並把所有本地修改 rebase 入重寫後的歷史中。

在執行這段腳本前,你需要準備的信息:

Mac、Linux下打開Terminal,Windows下打開命令提示符(command prompt)
給你的repo創建一個全新的clone
git clone --bare https://github.com/user/repo.git
cd repo.git

複製粘貼腳本,並根據你的信息修改以下變量:舊的Email地址,正確的用戶名,正確的郵件地址

#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="舊的Email地址"
CORRECT_NAME="正確的用戶名"
CORRECT_EMAIL="正確的郵件地址"
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

按 Enter鍵 執行腳本。
用git log命令看看新 Git 歷史有沒有錯誤
把正確歷史 push 到 Github

git push --force --tags origin 'refs/heads/*'

刪掉剛剛臨時創建的 clone

cd ..
rm -rf repo.git

不過此時我們如果以後再push,會爆出merge的錯,所以需要再寫一行代碼修復

git pull --allow-unrelated-histories
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章