GitHub提交未记录在“您的贡献”日历中

时间:2013-03-08 08:36:18

标签: git github

我一直在从我的linux shell继续提交我的GitHub repos,它们在网站上很好地显示出来。唯一的问题是“你的贡献”部分没有显示任何最近的活动。我从11月的某一天开始有一个绿色的广场,我不知道如何得到,但所有其他贡献都没有出现在日历中(但同样,他们出现在他们的回购中。
我在这里缺少什么?

My github site

30 个答案:

答案 0 :(得分:59)

来自git

  

我刚刚看了一下你对GoTime2存储库的贡献   似乎你一直在推动布局分支。

     

这些贡献没有出现的原因是我们只是   跟踪提交到存储库时的贡献   默认分支或gh-pages分支:

     

https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile#which-contributions-are-counted

     

一旦您的贡献合并到默认或gh页面,您就可以了   将在您撰写它们的那一天得到它们的记入。

所以在我的情况下,我必须将“布局”分支与“主”分支合并,以查看日历中显示的“您的贡献”。

答案 1 :(得分:45)

对我来说,这个问题是由我从我的工作计算机上提交的,我在我的gitconfig中使用了不同的电子邮件。将我的工作电子邮件地址添加到我的github帐户并没有使过去的提交显示在摘要中,但是新的提交现在正在显示它们应该。

您可以使用git config user.email找到您用于存储库的电子邮件地址。

答案 2 :(得分:31)

这是一个Github问题,有时它们的更新机制不起作用,它变成了“过时的缓存”。这没什么大不了的,只需发送电子邮件到support@github.com来描述问题,他们马上就会修复它。

答案 3 :(得分:19)

可能的原因:

  

提交是在一个分支

     

用叉子做的提交不会计入你的贡献。

https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/

答案 4 :(得分:11)

这就是诀窍!我刚刚使用$ git config user.email "my email address used on my git repo"并且它有效。

答案 5 :(得分:10)

"您必须使用您用于登录github帐户的相同电子邮件ID提交更改"

如何解决:

  • 使用以下命令更改所有存储库的全局电子邮件ID。
  

git config --global user.email abc@xyz.com

  • 或更改一个特定存储库的电子邮件ID。从详细资料库内部运行命令
  

git config user.email abc@xyz.com

  • 或者在存储库中打开.git / config文件并编辑
  

电子邮件= abc@xyz.com   name = abc

其他原因可以在这里找到 https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/

答案 6 :(得分:10)

确保您的本地电子邮件与帐户中的电子邮件完全相同。

转到终端,在推送提交的文件夹内,运行:

git config --global user.email
  #=> TRICULI.TO@MAIL.com

git config --system user.email
  #=> 

git config --local user.email
  #=> triculito@mail.com

类似的事情发生在我身上。我帐户中的电子邮件是--global中的电子邮件,但我的--local略有不同,它没有'。'。

(在Gmail中,这些电子邮件之间没有区别,它们的工作方式完全相同)。

答案 7 :(得分:6)

也许Github解决了这个问题。有一种简单的方法,请访问github.com电子邮件设置:https://github.com/settings/emails

  

个人设置 - >电子邮件

您可以在那里添加电子邮件地址,并通过发送验证链接验证您的新电子邮件地址,然后您会发现之前的提交都记录在“您的贡献”日历中。此电子邮件验证还可以让您从GitHub接收通知和密码重置。

您的新电子邮件地址将用于与帐户相关的通知(例如帐户更改和结算收据)以及任何基于网络的GitHub操作(例如编辑和合并)。

答案 8 :(得分:5)

所以这通常是由于很多因素造成的,您必须访问此GitHub help

我发现的最常见错误是:

  1. 在本地计算机上未正确配置电子邮件。 (你的笔记本电脑/电脑)。
  2. 分岔。
  3. 不使用默认或gh-pages分支进行提交。
  4. 我个人最近遇到了问题1,为此我转到 terminal / cmd / cli 并通过运行此命令在本地配置我的电子邮件地址

    config --global user.email yourname@email.address
    

    完成后,尝试再次运行此配置:

    config --global user.email
    

    你应该能够看到:

    yourname@email.address
    

    如果这是正确的,您已使用全局公共存储库成功配置了本地计算机。现在,您的下一次提交将记入您的日历。

答案 9 :(得分:5)

我在Xcode 9 for iOS开发中遇到了同样的问题。

在Github,我注意到了一位非提交作者。 enter image description here

即使我在Xcode中提交了。 “你的贡献”日历中没有任何贡献。

解决方案:

全局更改提交者姓名和电子邮件
用于提交的电子邮件地址必须与您的GitHub帐户相关联。

在终端:

$ git config --global user.name "Full Name"
$ git config --global user.email "fullname@gmail.com"

另请参阅GitHub帮助:Setting your commit email address in Git

答案 10 :(得分:4)

原来我之前在GitHub上更改了我的电子邮件地址,我也忘了更改本地的电子邮件地址。

答案 11 :(得分:4)

在我的许多提交发生后(新的提交正确显示),我发现在我的组织中添加了私有仓库的提交,我遇到了问题,并且只能通过删除电子邮件地址来显示它们我的个人资料,然后重新添加相同的电子邮件地址。

似乎这样做可以解决GitHub中的缓存问题。

答案 12 :(得分:2)

即使git config配置了正确的电子邮件地址,我仍然要手动将我的电子邮件添加到SourceTree设置。只有在这样做之后,GitHub才开始将我的提交录制到我的贡献图中。

SourceTree Settings Screenshot

答案 13 :(得分:2)

您可以转到https://github.com/settings/emails 并使用git config --global user.email

添加您正在使用的电子邮件

答案 14 :(得分:2)

我有同样的问题,这对我有用:GitHub贡献检查器,链接如下。 安装后,程序会检查您最近提交的有效性,并为您提供规则列表,规则/规则不会以红色显示。

我的问题是GitHub使用Cygwin终端名称作为电子邮件地址,所以我只是将我的Cygwin终端名称添加到我的个人资料中,所有最近的提交都添加到我的GitHub日历中。

您的提交不会被视为捐款!请查看以下详细信息: https://github.com/jdennes/contribution-checker

答案 15 :(得分:2)

我就同样的问题联系了 Github 团队,这是他们的回应,希望对你们中的一些人有所帮助

如果贡献符合特定条件,就会被计算在内,如下所述:

https://docs.github.com/github/setting-up-and-managing-your-github-profile/why-are-my-contributions-not-showing-up-on-my-profile

您可以了解为什么对公共存储库的特定提交不计为使用此应用程序的贡献:

https://contribution-checker.herokuapp.com/ 这个贡献检查器非常有帮助,它解决了我的问题

人们经常发现他们缺少贡献,因为他们的提交是由与他们的 GitHub 帐户无关的电子邮件地址创作的,如下所述:

https://docs.github.com/github/committing-changes-to-your-project/why-are-my-commits-linked-to-the-wrong-user

您可以通过在提交 URL 末尾添加 .patch 来检查提交的作者,如下所示:

https://github.com/github/linguist/commit/cfd5cbaba00122fceea1cfb108c5bdc3d451065a.patch

答案 16 :(得分:2)

GitHub明确说明了他们如何在MDN documentation中衡量您的贡献:

  • 问题和请求请求

    • 只有在独立存储库中打开它们时,才可以在fork中打开
  • 提交:
    只有满足以下所有条件:

    • 用于提交的电子邮件地址与您的GitHub帐户相关联

    • 提交是在独立存储库中进行的,而不是在分叉中进行的

    • 已进行提交:

      • 在存储库的默认分支(通常是主分支)中
      • 在gh-pages分支中(用于具有项目站点的存储库)

    此外,以下至少一项必须为真:

    • 您是存储库上的合作者,或者是拥有存储库的组织的成员
    • 您已分叉存储库
    • 您已在存储库中打开拉取请求或问题
    • 您已为存储库加注星标

注意: 进行了符合要求才能计为贡献的提交后,您可能需要等待24小时才能看到该贡献出现在您的贡献图

答案 17 :(得分:1)

我也有同样的问题,原来是因为本地git上的电子邮件与我的GitHub帐户上的电子邮件不匹配。

要在本地计算机上更新电子邮件,请执行以下操作:

git config --global user.email "your.email@email.com"

验证所有提交都在github上进行了更新,如果没有,则可以通过单击提交并在提交url的末尾添加“ .patch”,检查单个提交以查看与该提交相关的电子邮件:

https://github.com/username/repoName/commit/9fbe83f71cfc3503.patch

现在您要做的就是将您看到的电子邮件添加到您的帐户。(无需验证)

再次检查提交,您应该会看到您的用户名并记入:)

答案 18 :(得分:1)

我通过两次更改解决了这个问题

  1. 我使用命令 git config --global user.email "your github email"
  2. 配置了我的本地机器
  3. 我使用 github 网站 @ https://github.com/your-username/your-repo-name/settings/branches 将我的项目存储库的默认分支从 main to master 更改为 {{3}}

`

答案 19 :(得分:1)

我通过在本地环境中使用GitHub配置文件的用户名作为git用户名解决了类似问题。

例如,

https://github.com/susithrj

在本地git配置中将全局用户名设置为 susithrj

git config --global user.name“ susithrj”

答案 20 :(得分:1)

我遇到了同样的问题,解决方案非常简单。我为全局电子邮件配置设置了错误的电子邮件

git config --global user.email "email@yourmail.com"

只需确保上述电子邮件和您的GitHub帐户电子邮件相同

答案 21 :(得分:1)

github上的“贡献日历”或“活动概述”仅记录与github帐户中记录的邮件地址相关的提交。

更改以后所有提交的邮件地址

正如该线程中许多其他人已经提到的那样,通过以下方式查找当前本地保存的电子邮件地址:

git config user.email

如果它与github上的邮件不匹配,请使用:

git config --global user.email my_email@gmail.com

这将全局更改以后所有提交的邮件地址,但不会影响过去提交的“贡献概述”。您可以按照official docs进行扩展说明。

更改邮件地址以更新过去提交的概述

您意识到,您过去的许多提交未正确记录在Github的“贡献概述”中: enter image description here

要进行更改,您可以按照in the official github docs中说明的步骤更改存储库的作者信息。

简短摘要:

  1. 打开git bash
  2. 克隆裸仓库

    git clone --bare https://github.com/user/repo.git
    cd repo.git
    
  3. 在更改变量OLD_EMAILCORRECT_NAMECORRECT_EMAIL之后,将以下代码粘贴到git bash控制台中:

    #!/bin/sh
    
    git filter-branch --env-filter '
    
    OLD_EMAIL="your-old-email@example.com"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="your-correct-email@example.com"
    
    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. 将更正的历史记录推送到github
    git push --force --tags origin 'refs/heads/*'
    

此过程应该更新“贡献概述”,现在还显示以前未显示的提交: enter image description here

警告此操作对存储库的历史记录具有破坏性。如果您正在与其他人在存储库上进行协作,则重写已发布的历史记录被认为是不好的做法。您只应在紧急情况下这样做。

答案 22 :(得分:0)

我遇到了同样的问题,并发现我没有推送到原点/主分支,而是推送到其他一些分支。我通过合并两个分支来解决它。另外,即使两个分支合并,如果 origin/main 分支落后于多次提交,贡献部分仍然不会更新。仍然需要进行合并(某种)以确保 origin/main 分支始终更新,请执行:

注意:(此解决方案很容易适用于从远程拉取并推送到不同目标存储库的本地存储库(有问题的存储库))

  1. git pull origin main:temp

    • 这会将主分支拉到一个临时分支(临时分支是本地分支),但如果一个分支系统推入多个分支系统,origin/main 分支仍然落后于多个提交。我们需要 chekout 到 temp 分支以合并/向前移动它(可以这么说)
  2. git checkout temp

    • 它将从:(origin/main, origin/HEAD, temp) 变为->>>>>>>> (HEAD -> temp, origin/main, origin/HEAD) 这意味着现在 HEAD 指向 temp 分支,因此我们可以让它向前移动 (可以这么说)多次提交(或合并,无论情况如何)。
  3. git merge branch-second

    • 现在我们要合并到第二个分支:(origin/branch-second, main, branch-second) 本地,合并后在 temp 以上的几次提交看起来像这样:(HEAD -> temp, origin/branch-second, main, branch-second)
  4. git push origin temp:main

    • 现在将 temp 推送到原点的 main(原点意味着远程):
  5. git log --all --decorate --oneline --graph 显示:

    • (HEAD -> temp, origin/main, origin/HEAD, origin/branch-second, main, branch-second)
所以,origin/main 被合并并推送到 branch-second 并且都处于同一级别,并且贡献开始出现:) 希望它可以节省您的时间

查看我的中等文章: Medium

答案 23 :(得分:0)

对我来说是项目中的文件:

/.git/config

...
[user]
    name = your user
    email = user@host.com
...

在块内 [user] 仔细检查“电子邮件”是否正确(我的不正确)并且名称是唯一的(我的重复)。

与贡献者仔细核对正在增加使用:

git shortlog -sn

进行推送,检查哪个正在增加计数器,并且该名称应该是块 [user] 内的名称

答案 24 :(得分:0)

确保使用用户标志。 例如 git push -u origin 代替 git push

答案 25 :(得分:0)

有同样的问题,我的问题是通过设置电子邮件来解决的

index.php

希望这会有所帮助。

答案 26 :(得分:0)

您可以将电子邮件设为不公开,并且捐款仍会显示在日历中。您可以选择从github email settings保留电子邮件地址的私密性,并在git配置中使用 github noreply电子邮件地址

git config user.email "xxxxxxxxxxx@users.noreply.github.com"

注意

对于我来说,我已选择从 github电子邮件设置中保留我的电子邮件的私密性。 这给了我一个错误

Your push would publish a private email address.

同时尝试推送至我的仓库。我删除了电子邮件。推送成功后,但是捐款没有记录在我的日历中。

如GitHub在电子邮件设置页中所述

  

我们将删除您的公开个人资料电子邮件并使用   执行时为xxxxxxxxxxx@users.noreply.github.com   基于网络的Git操作(例如,编辑和合并),并通过   代表你。如果您希望命令行Git操作使用您的   私人电子邮件,您必须set your email in Git

答案 27 :(得分:0)

我检查了存储库的“ Insights”部分/选项卡,而不是我的当前用户,而是一个匿名用户(也是我),因此我将当前计算机中的电子邮件配置更改为我的电子邮件配置。如上所述使用github。

Insigths

答案 28 :(得分:0)

我刚刚通过命令行再次添加了电子邮件,它解决了该问题:

$ git config user.email "myemil@mydomain.com"

另一个问题是关于您的分支机构的。如果您在maser旁边创建另一个分支并尝试推送该分支,则可能会发生此问题。就我而言,我已经开始努力掌握并获得解决方案。

答案 29 :(得分:0)

我最近不得不恢复笔记本电脑,却忘记了将电子邮件重新配置为git。我的笔记本电脑用户名看起来与我的git one相似,所以我只是盲目地认为自己的提交被正确地赋予了属性。发布后,您可以更改全局电子邮件设置。但是,如果您想更正项目中未归因的提交,则可以使用此运行此脚本来创建别名gca,您可以在git项目目录中运行该别名来更改过去提交的作者身份。

在您的~目录中,添加:

$ cat <<EOF >> ~/.aliases
 function git_change_authorship {
 git filter-branch -f --env-filter "
  GIT_AUTHOR_NAME=\"\$1\"
  GIT_AUTHOR_EMAIL=\"\$2\"
  GIT_COMMITTER_NAME=\"\$1\"
  GIT_COMMITTER_EMAIL=\"\$2\"
 "
 }
 alias gca=git_change_authorship
 EOF

 $ source ~/.aliases

然后在您的git项目目录中运行gca <git username> <git email address>

抬起头!我仅在我自己的个人项目中使用过它,而我一直是唯一的提交者。没有机会通过小组项目进行测试,因此请谨慎进行。