前言
1 .長期使用GitHub托管代碼的小夥伴可能有發現,有時候寫了幾天的代碼,但是發現contribbution(小綠框并沒有點亮)
2 .那麼什麼樣的commit才會被統計到呢,這裡從github help上找到了答案,英語不錯的可以看下
中文
Issues 和 pull requests
這個操作是在一年之内
這個操作是針對一個獨立的倉庫,不能是fork
Commits
當你的commits滿足以下條件時,它才會被展示出來:
一年之内送出的commits
commits使用的email位址是與你的Github賬号相關聯的
這些commits是在一個獨立的倉庫而不是fork倉庫(部落客就是這種錯誤,導緻半個月的commit都沒記錄,才發現)
這些commits是在:
在預設分支上(通常是master)
在gh-pages分支(包含 Project Pages sites 的倉庫)
此外,至少滿足下面條件中的一個(主要針對你Commit的倉庫不是你建立的):
你是這個倉庫的協作者,或者是這個版本庫的擁有組織中的一員
你fork過這個倉庫
你對這個倉庫發起過pull request或者issue
你對這個倉庫标記了Star
【注意】:私有庫的貢獻僅僅對私有庫成員顯示
Contributions未被Github計入的幾個常見原因
- 進行Commits的使用者沒有被關聯到你的Github帳号中。
- 不是在這個版本庫的預設分支進行的Commit。
- 這個倉庫是一個Fork倉庫,而不是獨立倉庫。(部落客就是這種錯誤)
- contribbution 沒記錄怎麼破?
如何排查
你可以在你的本地repo裡用
git log
指令檢視
commit
記錄上的個人郵箱是否正确,像我就是因為之前切換到Mac平台開發之後使用者名沒有配置,是以我之後的commit記錄上的郵箱一直是mrchang,是以Github就會認為這些commits都不是你送出的!
補救措施
然而這也并不是沒有補救辦法的,Github官網上就有給出詳細的補救過程,英語好的同學請自行移步 Changing author info,下面是我翻譯自Github Help的簡要步驟:
變更作者資訊
為改變已經存在的 commits 的使用者名和/或郵箱位址,你必須重寫你 Git repo 的整個曆史。
警告: 這種行為對你的 repo 的曆史具有破壞性。如果你的 repo 是與他人協同工作的,重寫已釋出的曆史是一種不好的習慣。僅限緊急情況執行該操作。
使用腳本改變你 repo 的 Git 曆史
我們寫了一段能把 commit 作者舊的郵箱位址修改為正确使用者名和郵箱的腳本。
使用腳本來改變某個repo的Git曆史
我們已經建立了一個腳本,使用正确的姓名和電子郵件位址送出後,你以前送出的所有的commits中的作者資訊及送出者字段中的舊的使用者名和郵箱位址都将被更正
注意: 執行這段腳本會重寫 repo 所有協作者的曆史。完成以下操作後,任何 fork 或 clone 的人必須擷取重寫後的曆史并把所有本地修改 rebase 入重寫後的曆史中。
在執行這段腳本前,你需要準備的資訊:
Mac、Linux下打開Terminal,Windows下打開指令提示符(command prompt)
給你的repo建立一個全新的clone
git clone --bare
https://github.com/user/repo.gitcd 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
如何正确設定你的 git 個人資訊
接下來全局設定好你的正确資訊,以後就放心的用Github進行版本管理吧
git config --global user.email "你的郵件位址"
git config --global user.name "你的Github使用者名"