Github為什么沒有記錄你的Contributions


為什么你的 Contributions 沒有在你的 Profile 里顯示?

那么問題來了,什么是Contributions呢,Github官網上有這么一句話:

Your profile contributions graph is a record of contributions you've made to GitHub repositories. Contributions are only counted if they meet certain criteria. In some cases, we may need to rebuild your graph in order for contributions to appear.

你的個人簡介中的貢獻圖記錄的是你給Github上的倉庫的貢獻。它僅僅只記錄某些符合標准的commits。在某些情況下,我們需要重新建立你的貢獻圖以便讓所有的貢獻都顯示出來。

什么樣的貢獻才會被Github統計?

英語好的同學請移步 Why are my contributions not showing up on my profile?

Issues 和 pull requests

  • 這個操作是在一年之內

  • 這個操作是針對一個獨立的倉庫,不能是fork

Commits

當你的commits滿足以下條件時,它才會被展示出來:

  • 一年之內提交的commits

  • commits使用的email地址是與你的Github賬號相關聯的

  • 這些commits是在一個獨立的倉庫而不是fork倉庫

  • 這些commits是在:

    • 在默認分支上(通常是master

    • gh-pages分支(包含 Project Pages sites 的倉庫)

此外,至少滿足下面條件中的一個(主要針對你Commit的倉庫不是你創建的):

  • 你是這個倉庫的協作者,或者是這個版本庫的擁有組織中的一員

  • 你fork過這個倉庫

  • 你對這個倉庫發起過pull request或者issue

  • 你對這個倉庫標記了Star

注意:私有庫的貢獻僅僅對私有庫成員顯示

Contributions未被Github計入的幾個常見原因

  • 進行Commits的用戶沒有被關聯到你的Github帳號中。

  • 不是在這個版本庫的默認分支進行的Commit。

  • 這個倉庫是一個Fork倉庫,而不是獨立倉庫。

如何排查

你可以在你的本地repo里用git log命令查看commit記錄上的個人郵箱是否正確,像我就是因為之前切換到Mac平台開發之后用戶名沒有配置,所以我之后的commit記錄上的郵箱一直是Leo@Leo-MacBook-Pro.local,所以Github就會認為這些commits都不是你提交的!

補救措施

然而這也並不是沒有補救辦法的,Github官網上就有給出詳細的補救過程,英語好的同學請自行移步 Changing author info,下面是我翻譯自Github Help的簡要步驟:

變更作者信息

為改變已經存在的 commits 的用戶名和/或郵箱地址,你必須重寫你 Git repo 的整個歷史。

警告: 這種行為對你的 repo 的歷史具有破壞性。如果你的 repo 是與他人協同工作的,重寫已發布的歷史是一種不好的習慣。僅限緊急情況執行該操作。

使用腳本改變你 repo 的 Git 歷史我們寫了一段能把 commit 作者舊的郵箱地址修改為正確用戶名和郵箱的腳本。

使用腳本來改變某個repo的Git歷史

我們已經創建了一個腳本,使用正確的姓名和電子郵件地址提交后,你以前提交的所有的commits中的作者信息及提交者字段中的舊的用戶名和郵箱地址都將被更正

注意: 執行這段腳本會重寫 repo 所有協作者的歷史。完成以下操作后,任何 fork 或 clone 的人必須獲取重寫后的歷史並把所有本地修改 rebase 入重寫后的歷史中。

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

  1. Mac、Linux下打開Terminal,Windows下打開命令提示符(command prompt)

  2. 給你的repo創建一個全新的clone
    git clone --bare https://github.com/user/repo.git
    cd repo.git

  3. 復制粘貼腳本,並根據你的信息修改以下變量:舊的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
  4. 按 Enter鍵 執行腳本。

  5. git log命令看看新 Git 歷史有沒有錯誤

  6. 把正確歷史 push 到 Github

    git push --force --tags origin 'refs/heads/*'
  7. 刪掉剛剛臨時創建的 clone

    cd .. rm -rf repo.git

如何正確設置你的 git 個人信息

接下來全局設置好你的正確信息,以后就放心的用Github進行版本管理吧 ^_^

git config --global user.email "你的郵件地址" git config --global user.name "你的Github用戶名"

更多配置可以參考Pro Git 8.1自定義 Git - 配置 Git

轉載請注明原文鏈接:http://xunli.xyz/2016/01/09/g...


免責聲明!

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



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