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

我知道这没什么大不了的,但是我喜欢我的 GitHub 在语言上多样化。我写了一个项目在 斯威夫特和当我提交它说它在 目标 C

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

79692 次浏览

正如 GitHub 帮助页面中提到的

GitHub 使用开源的 语言学图书馆来确定语法突显和存储库统计数据的文件语言。
有些文件很难识别,有时项目包含的库和供应商文件比其主要代码多。

因此,您需要检查与 github/linguist#troubleshooting为了解决这种情况。

百分比是根据 列出语言 API报告的每种语言的代码字节计算的。
如果酒吧报告了一种你意想不到的语言:

  • 单击统计栏中的语言名称,查看标识为该语言的文件列表。
  • 如果您看到没有编写的文件,可以考虑将这些文件移动到 供应代码的路径中的一个,或者使用 手动控制功能手动控制功能忽略它们。
  • 如果文件被错误分类,搜索 悬而未决的问题看看是否有其他人已经报告了这个问题。您可以添加的任何信息,特别是公共存储库的链接,都是有用的。
  • 如果没有这种错误分类的报告问题,则 打开一个问题并包含到存储库的链接或被错误分类的代码的示例。

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

来自 莫妮卡 · 鲍威尔的文章“ 如何在 GitHub 中改变回购语言

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

虽然您仍然希望将这些文件提交到 GitHub,因此不能使用 .gitignore 您可以告诉 GitHub 的语言学家在 .gitattributes文件中忽略哪些文件

static/* linguist-vendored

这个只有一行的文件告诉 GitHub 忽略我的 static/文件夹中的所有文件,这个文件夹中存储了用于 Flask 应用程序的 CSS 和其他资产

“使用 .gitattributes”部分的确说明了如何标记错误的语言。
例如:

将没有编写的代码(如 JavaScript 库)检查到 git repo 中是一种常见的做法,但 这常常会夸大项目的语言统计数据,甚至可能导致项目被标记为另一种语言
默认情况下,Languist 将 vendor.yml中定义的所有路径视为供应商提供的,因此不将它们包含在存储库的语言统计数据中。

将语言学家供应商属性用于供应商或非供应商路径。

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

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

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

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

     touch .gitattributes
    
  3. 按照 语言学图书馆指令编辑文件,告诉 GitHub 如何编辑,例如:

     vi .gitattributes
    

    使用语言学家供应商可以让 GitHub 知道“跳过”这个文件夹和子文件夹的检测:

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

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

    project-docs/* linguist-documentation

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

    documented_code.rb linguist-documentation=true

    这有点奇怪,但是您也可以这样做——告诉 GitHub 处理一些具有特定扩展名的文件(例如 *)。Rb)作为 Java:

    *.rb linguist-language=Java

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

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

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

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

在项目根文件夹中创建一个名为. gitproperties 的文件,

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

对我有用。

回答上面这个问题的专家 EamonnM 提供的解决方案在我的项目中起作用,但是有两个重要的事情。

  1. 他代码第二行开头的语言是您想要的语言,而不是您不喜欢的语言。记住要分辨出来。

  2. 似乎在 *之前您不能键入任何空格。(例如,当我想把我的语言变成 Swift 时,我应该键入 *.swift linguist-vendored=false。)

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

所以,如果你确定所有的项目都是一种语言,那么你必须加上:

# Direct Swift
*.* linguist-language=Swift

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

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

忽略 JavaScript 文件的例子:

*.js linguist-vendored

将. gittribute 替换为 this,它将 所有文件重新分类为 Java。

 *.* linguist-language=Java

语言学家

通过使用 .gitattributes文件中的 GitHub 语言学家可检测选项,您可以避免意外的语言检测(通过 文件扩展名或通过项目子文件夹等) :

语言统计数据中只包括编程语言。不同类型的语言(如 languages.yml中定义的)是不“可检测的”,因此它们不包含在语言统计信息中。

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

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

在文件夹的根目录中创建 .gitattributes文件。假设你想要的语言是 Java,只需要复制粘贴:

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

.gitattributes文件中,并在回购中推送该文件。刷新您的 GitHub 页面以查看语言更改。

注意 : 因此,对于所需的语言,将其设置为 true,而将其设置为 other,应该可以正常工作。

我对此也有意见。我创造了。在我的项目的根目录下。我移除了。JS 和。但是。Html 还在。这是我的 。 gittribute文件:

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

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

Enter image description here

回答:

它仍然是相同的。 Html仍然显示。

答案很简单:

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

  1. touch .gitattributes

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

  2. *.* linguist-language=Java

    用你的目标语言改变 Java

  3. git add .

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

  5. git push

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

如果您想更改 Laravel 存储库的语言,那么在 .gitattributes文件中添加以下代码行:

*.blade.php linguist-vendored

GitHub 将 刀锋文件定义为 HTML,但是 *.html linguist-vendored不工作。

  1. 在根文件夹中创建文件“ . gitproperties”。

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

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

.意味着每个其他文件不应该被检测为语言。 对于那些希望检测到两种以上语言的用户,他们可以操作这个文件。