GitHub投稿页面显示太多更改

idv4meu8  于 2022-09-21  发布在  Git
关注(0)|答案(3)|浏览(150)

我一直在建立我的关于堆栈溢出作业的页面,我注意到在我的一个存储库上,我有3521,316个添加和3,459,307个删除,这似乎不正确,所以我决定进行调查。使用GitHub的贡献页面,我将更改本地化到January 26–27,其中显示有30个提交,增加了3,507,040项,删除了3,453,801项。然而,当我单击30 commits文本查看提交时,there are only two总共增加了208项,删除了152项。我甚至检查了所有其他分支,看看它们在该时间范围内是否有其他提交,但没有一个提交。

我希望我的So Jobs页面的投稿计数是准确的,而不仅仅是为了准确起见而希望它们准确,但我不知道为什么它们如此不正确,也不知道如何纠正它们。我在网上搜索了解决方案,但我找到的所有东西都是关于没有出现的贡献,而不是出现了太多的贡献。

ffvjumwh

ffvjumwh1#

在回顾提交历史之后,有一些大量的提交,其中我更改了大量的JSON数据文件,所以这似乎不是GitHub的错误(除了将所有这些更改都归因于贡献者页面上的一天)。知道实际上有大量的行更改,我开始尝试如何忽略这些文件,结果遇到了this issue,这将我带到了GitHub语言项目的自述文件的这一部分。在闲逛了一会儿之后,我想,通过将文件标记为在.gitattributes文件中生成,它们将被排除在Differs之外,因此它们的行大概也将被排除在总贡献之外。到目前为止,我的全部贡献还没有得到纠正,但语言学家页面指出,更新是在较低优先级的队列中运行的,所以可能需要一些时间。

要忽略某个文件,请在.gitattributes文件中为其添加以下属性之一。.gitattributes文件使用与.gitignore文件相同的模式语法。如果需要追溯,则需要添加/修改.gitattributes文件,创建提交,然后重新设置为insert it into the past


* .txt linguist-generated

# `linguist-generated` marks a file as generated, so it won't count toward

# language statistics or commit additions/deletions.

README.txt -linguist-generated

# prepending an attribute with a `-` removes it from the file

/libs/somelibrary.js linguist-vendored

# `linguist-vendored` marks a file as an external file such as a library. This

# file will still appear in commit diffs, but it won't contribute to the

# repository's language statistics

/docs/**linguist-documentation

# `linguist-documentation` marks a file as documentation. This has the same

# effect as `linguist-vendored`.

/configs/*.json linguist-detectable
/tools/merge_configs.py -linguist-detectable

# `linguist-detectable` marks a file to be counted in language statistics.

# By default it is enabled for programming languages, so you can use it to

# either include non-code files, or exclude code files.
m3eecexj

m3eecexj2#

我在GitHub储存库贡献图上也遇到了同样的问题,最后我找到了解决这个问题的方法。值得一提的是,linguist对我没有帮助。
如果第一部分或第二部分here出现问题,您可以找到如何撤消rebase。请不要忘记保存您的存储库的备份。

更改提交的作者名称

注意:这将重写存储库提交历史,在BAD COMMIT之后推送的所有提交将在{repo-url}/commits/{branch}中显示为今天推送(提交的原始日期不会改变)。

More detailed source

  • 因此,首先,创建您的存储库的备份并保存到某个位置。
  • 现在您应该找到您的“错误提交”散列
  • 然后查找在该提交之前的提交(较早的提交)。您可以使用git log来实现这一点。
  • 复制提交散列并执行以下操作:
git rebase -i earlier_commit_here
  • 文本编辑器将出现。找到您的BAD COMMIT,并将其旁边的单词“Pick”更改为“EDIT”(为此,请按键盘上的i按钮,然后更改文本,按Esc并键入:wq保存并退出)。
  • 现在您应该将您提交的作者更改为类似的内容,而不是电子邮件(source):
git commit --amend --author="nocontribute <>"
  • 要完成rebase,请键入以下命令:
git rebase --continue
  • 强制推送历史:
git push --force
  • 稍等贡献者的图表更新(最多24小时)。

在我的例子中,我打乱了我的存储库,上面的步骤没有帮助。如果您的投稿人的图表仍然相同,您可以执行以下操作:

新建仓库并将所有提交移动到该仓库

这些步骤的主要思想是将cherry-pickpush“错误提交”与其他提交分开。因此,如果您有多个“错误提交”,请记住这一点。如果你把所有的提交都放在一起,它会把你的“错误提交”计入“无贡献”作者。很奇怪,但这是真的。人们花了很长时间才发现这一点。

要继续进行,也应该执行前面的步骤。

注意:这不仅会重写存储库的提交历史,还会清除您的所有统计数据(因为您将创建一个新的存储库)。只有承诺将保留。

Detailed source for moving commits to another repository

  • 将GitHub上当前存储库的名称更改为类似currentname-outdated的名称。
  • 创建一个名为currentname的新存储库并克隆它(不要忘记重命名您以前克隆的存储库名称)。
  • cd复制到新的克隆存储库目录,然后键入以下内容:
git remote add oldrepo https://github.com/path/to/oldrepo
  • 然后更新:
git remote update
  • 现在将cd存储到旧的(过时的)存储库,并将提交日志保存到文件中:
git log --pretty="format:cp %h" > commits.txt
  • 然后反转此文件中的行(您可以使用command line tools(值得一提的是tail命令没有像我预期的那样工作,它在一行上添加了两个提交)或使用this等在线工具)并将其保存到commits.sh文件中。
  • 现在打开commits.sh文件,复制并剪切错误提交和它之后的所有提交并保存到其他地方。因此,您将在commits.sh文件中的“错误提交”之前提交。
  • cherry-pick创建新别名:
alias cp='git cherry pick '
  • cd添加到您的新存储库,并执行commits.sh
sh ../currentname-outdated/commits.sh
  • 将更改推送到存储库:
git push
  • 在此处查看您的贡献者图表:{repo-url}/graphs/contributors。检查一下是否一切正常。
  • 然后接受你的“糟糕的承诺”,精挑细选并推动:
cp bad_commit
git push
  • 再次查看投稿人的图表。
  • 如果一切正常,打开剩余的提交,删除其中的错误提交,并将commits.sh中的提交替换为已保存的提交(除了错误提交,因为您已经推送了它)。
  • 再次执行commits.sh
sh ../currentname-outdated/commits.sh
  • 检查您的图表。
  • 现在继续从旧存储库中移动其他项目(如问题、标签、标签等)。

希望它能帮助一些人。

jtw3ybtb

jtw3ybtb3#

我检查了一下,看起来GitHub出了点问题。我尝试了一个解决办法,它奏效了,转到您共享的GitHub的链接(对于26 and 27 Jan 2019之间的时间范围),然后从右上角的贡献下拉菜单中选择Additions选项,请参见下方的屏幕截图,现在贡献图将重新呈现,现在再次单击相同的下拉菜单并选择选项Commits。现在点击30 commits,你会发现你所有的提交。

相关问题