【git】提交到github不顯示貢獻小綠點問題的解決
問題描述:
最近一直在用github來寫部落格,但是今天發現github上的contributions記錄並沒有我的提交記錄.
經過一番百度和自行搗鼓發現了問題所在.
原因:
最近實習,公司給配電腦.原來沒有git,是用homebrew安裝的,github上的倉庫也是用新電腦來建立的,以及後續部落格的提交也是.
因為是mac並沒有進行本地的任何配置,就直接用終端把本地檔案push到倉庫中去了.
原因也就在這裡.
因為你本地的git預設的user.name和user.email並不是你的,而是本機.所以在此期間你的commit都是預設本機的.
你可以用git config user.name / git config user.email 來檢視自己的git所屬
查不出的結果應該是為空,因為你根本就沒設定過.
然後用git log檢視一下commit記錄.你會驚奇的發現雖然在往你的github倉庫中push,但是使用者名稱和郵箱卻不是你github的,而是系統預設的pc使用者.
所以github貢獻統計的根本就不是你的賬戶,就沒有貢獻小綠點咯.
解決辦法:
1.如果你只是想以後的commit記錄,你只需要把當前本地git的user.name和user.email配置一下即可.
$ git config --global user.name “github’s Name” $ git config --global user.email "[email protected]"
這裡只是在git config 後邊新增上了你要更改的內容即可,--global引數指的是全域性,也就是你本地的所有倉庫,如果不加就是單個倉庫.
修改好後,你以後的commit就是你的賬戶了,就能被統計貢獻小綠點了.
2.如果你不想浪費之前的commit貢獻,需要把所有你用預設賬戶的commit都歸為你真正的名下怎麼辦.
我們需要修改所有的commit和push歷史
git filter-branch -f --env-filter ' if [ "$GIT_AUTHOR_NAME" = "oldName" ] then export GIT_AUTHOR_NAME="newName" export GIT_AUTHOR_EMAIL="newEmail" fi ' HEAD git filter-branch -f --env-filter ' if [ "$GIT_COMMITTER_NAME" = "oldName" ] then export GIT_COMMITTER_NAME="newName" export GIT_COMMITTER_EMAIL="newEmail" fi ' HEAD
這裡的oldName我們可以通過git log來檢視,其實這裡只要修改GIT_COMMITTER就可以了.
AUTHOR記錄的是這次修改的作者資訊,COMMITTER是這次提交的使用者資訊.
注意兩者區別,
如果你自己寫自己提交,那麼兩者都是你.
有的專案有的人並沒有commit許可權,所以他需要修改完之後交給有許可權的人提交,這樣你是AUTHOR並不是COMMITTER
如果修改成功提示:Ref 'refs/heads/master' was rewritten.
如果修改失敗提示:Ref 'refs/heads/master' is unchanged.這裡可能是因為你填寫的oldName並沒有找到.
如果無差別把所有都改的話去掉if..fi
git filter-branch -f --env-filter " GIT_AUTHOR_NAME='newName'; GIT_AUTHOR_EMAIL='newEmail'; GIT_COMMITTER_NAME='newName'; GIT_COMMITTER_EMAIL='newEmail' " HEAD
這樣就全部改過來了.
注意:
你這裡將你本地git的賬戶和郵箱重新設定了,但是github並沒有那麼智慧就能判斷你是原來你係統預設的使用者.
也就是說你新配置的使用者和你預設的被github識別成兩個使用者.
這樣你以後操作的時候commit 或者 push的時候有可能產生衝突.
解決方法是
1.使用強制push的方法:
$ git push -u origin master -f
這樣會使遠端修改丟失,一般是不可取的,尤其是多人協作開發的時候。
我這裡只是自己寫的部落格,所以就直切全部強制覆蓋掉了.
2.push前先將遠端repository修改pull下來
git pull origin master
git push -u origin master
3.若不想merge遠端和本地修改,可以先建立新的分支:
git branch [name]
然後push
git push -u origin [name]
效果圖:
在使用預設的git使用者修改的顯示是這樣的,nice是我的pc使用者名稱
修改之後,
修改完之後重新整理,我的貢獻小綠點全部出來了.(小綠點是以賬戶郵箱為單位記錄的,如果有多個郵箱,可以在資訊裡的email新增新郵箱就完事ok)
最後叮囑:
當我們換電腦使用git的時候,記得修改 git config user.name/user.email就不會出現這樣的問題了.