記錄下為什么github 提交的時候褐荷,沒有記錄到 github 的那個日歷上转捕。
明明天天都有提交胳螟,但是為什么都沒有記錄上來呢? 想讓這個日歷上滿滿的綠色接校,但是發(fā)現(xiàn)提交都沒有被統(tǒng)計起來猛频,很郁悶狮崩。
后面看了commit記錄,發(fā)現(xiàn)上傳的用戶都不是 github的用戶名鹿寻, 很納悶睦柴。
后面看了一篇 文章, 得知 以下三種情況毡熏,不統(tǒng)計坦敌。
- 用戶名或者郵箱跟github沒有關聯(lián)上, github認為不是你提交的痢法, 不統(tǒng)計狱窘。
- fork 的項目, 不統(tǒng)計
- 沒有在版本庫的master【默認分支】上提交
解決方案
- 用戶名和郵箱跟github沒有匹配上
git config --global user.email "你的郵件地址"
git config --global user.name "你的Github用戶名"
- fork 的項目财搁, 不統(tǒng)計
你說怎么辦呢蘸炸? clone 下來, 在提交上去尖奔, 有點可恥的樣子搭儒。
- 沒有在版本庫的master【默認分支】上提交 【未試過】
有補救的方法,
如何排查
你可以在你的本地repo里用git log
命令查看commit記錄上的個人郵箱是否正確越锈,像我就是因為之前切換到Mac平臺開發(fā)之后用戶名沒有配置仗嗦,所以我之后的commit記錄上的郵箱一直是Leo@Leo-MacBook-Pro.local
,所以Github就會認為這些commits都不是你提交的甘凭!
補救措施
然而這也并不是沒有補救辦法的稀拐,Github官網(wǎng)上就有給出詳細的補救過程,英語好的同學請自行移步 Changing author info丹弱,下面是我翻譯自Github Help的簡要步驟:
變更作者信息
為改變已經(jīng)存在的 commits 的用戶名和/或郵箱地址德撬,你必須重寫你 Git repo 的整個歷史。</br>
警告: 這種行為對你的 repo 的歷史具有破壞性躲胳。如果你的 repo 是與他人協(xié)同工作的蜓洪,重寫已發(fā)布的歷史是一種不好的習慣。僅限緊急情況執(zhí)行該操作坯苹。
使用腳本改變你 repo 的 Git 歷史我們寫了一段能把 commit 作者舊的郵箱地址修改為正確用戶名和郵箱的腳本隆檀。</br>
使用腳本來改變某個repo的Git歷史</br>
我們已經(jīng)創(chuàng)建了一個腳本,使用正確的姓名和電子郵件地址提交后粹湃,你以前提交的所有的commits中的作者信息及提交者字段中的舊的用戶名和郵箱地址都將被更正</br>
注意: 執(zhí)行這段腳本會重寫 repo 所有協(xié)作者的歷史恐仑。完成以下操作后,任何 fork 或 clone 的人必須獲取重寫后的歷史并把所有本地修改 rebase 入重寫后的歷史中为鳄。</br>
在執(zhí)行這段腳本前裳仆,你需要準備的信息:
Mac、Linux下打開Terminal孤钦,Windows下打開命令提示符(command prompt)</br>
給你的repo創(chuàng)建一個全新的clonegit clone --bare https://github.com/user/repo.gitcd repo.git
復制粘貼腳本歧斟,并根據(jù)你的信息修改以下變量:舊的Email地址
纯丸,正確的用戶名
,正確的郵件地址
#!/bin/shgit 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"fiif [ "$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鍵
執(zhí)行腳本静袖。
用git log
命令看看新 Git 歷史有沒有錯誤
把正確歷史 push 到 Github
git push --force --tags origin 'refs/heads/*'
刪掉剛剛臨時創(chuàng)建的 clone
cd ..rm -rf repo.git