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


106

我知道这不是什么大问题,但是我喜欢我的Github在语言上多样化。我在Swift中编写了一个项目,当我提交该项目时说它在Objective C中。

我认为可能是因为Parse框架是用Objective C编写的,并且可以检测到它,但是有什么方法可以更改主存储库页面上的显示语言?


Answers:


126

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

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

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


5
只需在repo根文件夹下创建一个新的.gitattributes文件,上面的内容即可立即修复!
Gob00st

最优秀的 我有一个标为CSS项目的Scala项目。不好。;)
Objektwerks

5
也许是一个虚假的注释,但是如果您想知道该怎么做,请执行以下操作:1.在其注释中遵循@ Gob00st的指导,并2.在主要语言文件的扩展名中替换“ .js”。
伊丽莎白·

非常感谢。我浏览了很多文章,但是除了这篇文章之外,没有其他文章对我有用。
Modo

我的ASP.NET核心项目也遇到类似的问题。Github认为这是一个JavaScript存储库,因为www文件夹下的js文件数量很大。添加.gitattributes文件并由[webprojectfolder] / wwwroot / *语言学家供应商修复。谢谢。
穆斯塔法

63

GitHub帮助页面所述

GitHub使用开源Linguist库来确定语法突出显示和存储库统计信息的文件语言。
有些文件难以识别,有时项目包含的库和供应商文件比其主代码更多。

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

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

  • 在统计栏中单击该语言的名称,以查看被标识为该语言的文件的列表。
  • 如果看到未写入的文件,请考虑将文件移至供应商代码路径之一,或使用手动替代功能忽略它们。
  • 如果文件分类错误,请搜索未解决的问题以查看是否有人报告了问题。您可以添加的任何信息(特别是指向公共存储库的链接)都是有帮助的。
  • 如果没有关于此错误分类的报告问题,请打开一个问题,并包括指向存储库或被错误分类的代码示例的链接。

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

Monica Powell的文章“ 如何在GitHub中更改回购语言

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

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

static/* linguist-vendored

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

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

将未编写的代码(例如JavaScript库)检入git repo是一种常见的做法,但这通常会夸大项目的语言统计信息,甚至可能使您的项目被标记为另一种语言
默认情况下,Linguist会将定义的所有路径vendor.yml视为供应商,因此不会将它们包括在存储库的语言统计中。

使用语言学家供应商属性来指定供应商路径或非供应商路径。

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

为我工作,尽管现在想知道如果.gitattribute位于.gitignore中,该方法如何仍可在GitHub上工作,因为GitHub显然需要该文件,但我真的不再想要它在我的仓库中了……
Dave Everitt

1
.gitattributes而非.gitattribute
Derzu '18

不知道.gitattributes存在。感谢+1
scipsycho

31

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

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

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

    触摸.gitattributes

  3. 按照语言学家的说明来编辑文件,以告诉Github如何做,例如:

    vi .gitattributes

    使用语言供应商可以让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
Chirag Savsani,

15

以此替换您的.gitattributes,它将所有文件重新分类为Java。

 *.* linguist-language=Java

语言学家


8

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

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

在.gitattributes文件中将其推送到仓库中,刷新GitHub页面以查看语言更改。

注意:因此,对于所需的语言,请使其为true,其他为false。应该可以正常工作


2

我有一个项目是从Objective-C开始的,然后完全更改为Swift(新项目,但在相同的存储库目录中)。无论我在gitattributes中添加了什么,Github始终将其标识为Objective-C。(以上所有解决方案)

因此,如果安装了夹具,并且您确定所有项目都是一种语言,则可以从根本上说:

在此处输入图片说明

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



2

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

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

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

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

2

如果要更改Laravel存储库的语言,请在.gitattributes文件中添加以下行:

*.blade.php linguist-vendored

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


1

由专家EamonnM提供的解决方案在我的项目中有效,上面回答了这个问题,但是有两点要注意。

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

  2. 看来您无法在之前输入任何空格*。(例如,*.swift linguist-vendored=false当我想将语言快速更改时,我应该输入。)


0

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

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

为我工作。


0

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

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

当我添加*语言学家供应时,我在GitHub上看不到任何东西。

谢谢你的帮助。

在此处输入图片说明

回答:

仍然相同,仍然显示.html


0

答案很简单:

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

  1. touch .gitattributes 编写此命令后,应找到此文件-.gitattributes-,如果未出现此文件,请尝试显示隐藏文件以查找它。
  2. *.* linguist-language=Java 使用目标语言更改Java-视情况而定-
  3. git add .
  4. git commit -m "Change Tagged language from Java to Kotlin"
  5. git push 现在,在刷新Github页面之后,您应该找到新的更新。

-1
# add this two lines 
*.* linguist-language=Swift

project-docs/* linguist-documentation

4
您可以在代码语句中添加一些解释吗?
Stephan Hogenboom
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.