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

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

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

【问题讨论】:

标签: git github repository github-linguist


【解决方案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】:

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

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

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

     touch .gitattributes
    
  3. 按照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

  4. 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 提供的解决方案在我的项目中有效,但有两点很重要。

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

              2. 您似乎无法在* 之前键入任何空格。 (例如,当我想将我的语言更改为 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】:

                答案很简单:

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

                1. touch .gitattributes

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

                2. *.* linguist-language=Java

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

                3. git add .

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

                5. git push

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

                【讨论】:

                  【解决方案13】:

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

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

                  为我工作。

                  【讨论】:

                    【解决方案14】:
                    1. 在根文件夹中创建文件“.gitattributes”。

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

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

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

                    【讨论】:

                      猜你喜欢
                      • 2022-12-10
                      • 2017-11-20
                      • 1970-01-01
                      • 2014-11-15
                      • 2023-03-05
                      • 2022-08-14
                      • 2021-12-16
                      • 2010-10-26
                      • 1970-01-01
                      相关资源
                      最近更新 更多