GitHub 将存储库更改为错误的语言

Posted

技术标签:

【中文标题】GitHub 将存储库更改为错误的语言【英文标题】:GitHub changes repository to the wrong language 【发布时间】:2016-04-15 07:16:49 【问题描述】:

我知道这没什么大不了的,但我喜欢我的 GitHub 语言多样化。我在Swift 写了一个项目,当我提交它时说它在Objective-C。

我认为这可能是因为 Parse 框架是用 Objective-C 编写的,它会检测到这一点,但是有没有办法更改主存储库页面上的显示语言?

【问题讨论】:

How to change the language of a repository on GitHub?的可能重复 【参考方案1】:

我发现最简单的方法是在我的存储库的根文件夹中创建一个名为 .gitattributes 的文件,并为其提供以下内容:

* linguist-vendored
*.js linguist-vendored=false

这个例子告诉 GitHub/Linguist 忽略所有文件,然后只查看 .js 文件。我的项目https://github.com/aim12340/jQuery-Before-Ready 被列为 html,因为 HTML 示例文件比 javascript 文件大。这个文件为我修复了它,现在它被列为 JavaScript。

【讨论】:

只需在 repo 根文件夹下新建一个 .gitattributes 文件,上面的内容,即时修复! 可能是一个假评论,但如果您想知道该怎么做,1. 遵循@Gob00st 在他的评论中的指导,以及 2. 用您的主要语言的扩展名替换“.js”文件。 我的 ASP.NET 核心项目也遇到了类似的问题。 Github 认为这是一个 javascript repo,因为 www 文件夹下的 js 文件量很大。使用 [webprojectfolder]/wwwroot/* linguist-vendored 添加 .gitattributes 文件修复了它。谢谢。【参考方案2】:

如GitHub help page中所述

GitHub 使用开源 Linguist library 来确定用于语法高亮和存储库统计的文件语言。 有些文件很难识别,有时项目包含的库和供应商文件比它们的主要代码更多。

因此您需要与github/linguist#troubleshooting 联系以解决此问题。

百分比是根据List Languages API 报告的每种语言的代码字节数计算的。 如果栏报告的语言不是您所期望的:

点击统计栏中的语言名称可查看标识为该语言的文件列表。 如果您看到不是您编写的文件,请考虑将这些文件移至paths for vendored code 之一,或使用manual overrides feature 忽略它们。 如果文件被错误分类,请搜索open issues 以查看是否其他人已报告此问题。您可以添加的任何信息,尤其是公共存储库的链接,都会很有帮助。 如果没有报告此错误分类的问题,请open an issue 并包含指向存储库的链接或错误分类的代码示例。

2017 年 2 月更新(一年后):

来自Monica Powell的文章“How to Change Repo Language in GitHub

在研究如何解决 GitHub 错误分类项目语言的问题后,我发现解决方案就像告诉 GitHub 忽略哪些文件一样简单。

虽然您仍想将这些文件提交到 GitHub,因此无法使用 .gitignore您可以告诉 GitHub 的语言专家在 .gitattributes 文件中忽略哪些文件

static/* linguist-vendored

这个单行文件告诉 GitHub 忽略我的 static/ 文件夹中的所有文件,该文件夹是为 Flask 应用程序存储 CSS 和其他资产的位置

"Using .gitattributes" section 确实说明了如何标记错误的语言。 例如:

将您未编写的代码(例如 JavaScript 库)检查到您的 git 存储库中是一种常见的做法,但是 这通常会夸大您项目的语言统计数据,甚至可能导致您的项目被标记为另一种语言强>. 默认情况下,Linguist 将 vendor.yml 中定义的所有路径视为已售出,因此不会将它们包含在存储库的语言统计信息中。

对供应商或非供应商路径使用 linguist-vendor 属性。

$ cat .gitattributes
special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false

【讨论】:

为我工作,虽然现在想知道如果 .gitattribute 在 .gitignore 中,这如何仍然在 GitHub 上工作,因为 GitHub 显然需要该文件,但我真的不想要它在我的回购中...... 在我的情况下,我希望我的 GitHub 配置文件的 README.md 显示出来(因为它实际上是那个 repo 中唯一的文件)所以我创建了 .gitattributes:*.md liguist-detectableREADME.md -linguist-documentation@ 987654332@【参考方案3】:

为了简单起见,让我分享一下我的步骤:

    将目录更改为您的项目根文件夹;

    使用您选择的任何工具创建一个名为 .gitattributes 的文件:

     touch .gitattributes
    

    按照Linguist library的说明编辑文件,告诉GitHub怎么做,例如:

     vi .gitattributes
    

    使用 linguist-vendred 可以让 GitHub 知道“跳过”对该文件夹和子文件夹的检测:

    src/main/resources/static/* linguist-vendored

    使用 linguist-documentation 属性将路径标记或取消标记为文档:

    project-docs/* linguist-documentation

    或标记包含文档的单个文件

    documented_code.rb linguist-documentation=true

    这有点奇怪,但你也可以这样做——告诉 GitHub 将某些具有特定扩展名(例如 *.rb)的文件视为 Java:

    *.rb linguist-language=Java

    Git 添加、提交,然后将其推送到 GitHub。标签几乎会立即得到更正。

【讨论】:

为我工作,我在我的 .gitattributes 文件中添加了以下几行 *.java linguist-detectable=false *.dart linguist-language=Dart *.dart linguist-detectable=true android/* linguist-vendored build/* linguist-vendored【参考方案4】:

用这个替换您的 .gitattributes,这会将 所有 文件重新分类为 Java。

 *.* linguist-language=Java

linguist

【讨论】:

【参考方案5】:

在文件夹的根目录中创建.gitattributes 文件。假设您希望语言是 Java,只需复制粘贴即可:

*.java linguist-detectable=true
*.js linguist-detectable=false
*.html linguist-detectable=false
*.xml linguist-detectable=false

.gitattributes 文件中并将文件推送到存储库中。刷新您的 GitHub 页面以查看语言更改。

注意:所以,对于想要的语言,让它为真,其他的为假。它应该可以正常工作。

【讨论】:

【参考方案6】:

您可以通过在您的.gitattributes 文件中使用GitHub linguist detectable option 来避免意外的语言检测(通过filename extension,或通过项目子文件夹等):

语言统计中仅包含编程语言。不同类型的语言(如languages.yml 中定义)不是“可检测的”,导致它们不包含在语言统计信息中。

使用linguist-detectable 属性将路径标记或取消标记为可检测:

*.kicad_pcb linguist-detectable=true
*.sch linguist-detectable=true
tools/export_bom.py linguist-detectable=false

【讨论】:

【参考方案7】:

我有一个项目是在 Objective-C 中启动并完全更改为 Swift(新项目,但在同一个存储库目录中)。 无论我在文件 .gitattributes 中使用什么,GitHub 一直将其标识为 Objective-C(之前答案中的所有解决方案)。

所以,如果 jig 完成了,并且您确定所有项目都是一种语言 - 您从根本上添加:

# Direct Swift
*.* linguist-language=Swift

只有这样才能解决问题:)

【讨论】:

【参考方案8】:

.gitattributes 文件中告诉语言学家不要确定你不想要的文件语言。

忽略 JavaScript 文件的示例:

*.js linguist-vendored

【讨论】:

【参考方案9】:

如果您想更改 Laravel 存储库的语言,则将以下行添加到您的 .gitattributes 文件中:

*.blade.php linguist-vendored

GitHub 将 Blade 文件定义为 HTML,但 *.html linguist-vendored 不起作用。

【讨论】:

【参考方案10】:

回答上述问题的专家 EamonnM 提供的解决方案在我的项目中有效,但有两点很重要。

    他的代码第二行开头的语言是你想要的语言,而不是你不喜欢的语言。记得区分哦。

    您似乎无法在* 之前键入任何空格。 (例如,当我想将我的语言更改为 Swift 时,我应该输入 *.swift linguist-vendored=false。)

【讨论】:

【参考方案11】:

我也有这个问题。我在项目的根目录中创建了 .gitattributes。我删除了 .js 和 .cs,但 .html 仍然存在。这是我的 .gitattributes 文件:

*.cs linguist-detectable=true
*.js linguist-detectable=false`
*.html linguist-detectable=false
*.xml linguist-detectable=false

当我添加 * linguist-vendored 时,我在 GitHub 上看不到任何内容。

答案:

还是一样。 .html 仍然显示。

【讨论】:

我认为第二行末尾的“引号”(在 false 之后)破坏了文件 :)【参考方案12】:

答案很简单:

只需在项目终端中添加这些行

    touch .gitattributes

    编写此命令后,应该在项目资源管理器中找到文件 .gitattributes。如果此文件没有出现,请尝试显示隐藏文件以找到它。

    *.* linguist-language=Java

    用您的目标语言更改 Java - Swift 在您的情况下-

    git add .

    git commit -m "Change tagged language from Java to Kotlin"

    git push

现在刷新 GitHub 页面后,您应该会发现新的更新。

【讨论】:

【参考方案13】:

为您的项目根文件夹创建一个名为 .gitattributes 的文件。添加file_name linguist-generated=true 可以解决问题。就我而言,

mvnw.cmd linguist-generated=true
mvnw linguist-generated=true

为我工作。

【讨论】:

【参考方案14】:
    在根文件夹中创建文件“.gitattributes”。

如果你想让你的 git 只检测 .java 文件,你可以使用:

*.java linguist-detectable=true
*.* linguist-detectable=false

. 表示不应将所有其他文件检测为语言。 对于那些想要检测超过 2 种语言的人,他们可以操作此文件。

【讨论】:

以上是关于GitHub 将存储库更改为错误的语言的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .NET 标准库更改为 .NET 框架库?

如何将与 GitHub 的连接从 SSH 更改为 HTTPS?

多个github帐户错误

将我的 Github 用户名更改为 SnakeCase 会破坏啥吗?

使用 Git 将远程“来源”更改为“上游”

几天后,GitHub的“master”将更改为“main”