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

146

我知道这不是什么大问题,但我喜欢我的GitHub语言上有多样性。我用Swift写了一个项目,但当我提交时却显示是Objective-C

我想这可能是因为Parse框架是用Objective-C编写的,导致这种情况出现,但是否有办法更改主存储库页面上显示的语言呢?


1
可能是如何在GitHub上更改存储库的语言?的重复问题。 - tkruse
14个回答

167

我发现最简单的方法是在我的代码库的根目录中创建一个名为.gitattributes的文件,并将其内容设置为如下:

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

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


5
只需在代码库的根目录下创建一个新的.gitattributes文件,并将上述内容添加进去,即可立即解决问题! - RoundPi
5
也许这是一个简单的评论,但如果你不确定该怎么做,1.请遵循@Gob00st在他的评论中提供的指导,2.将“.js”替换为您主要语言文件的扩展名。 - Eli
我在我的ASP.NET Core项目中遇到了类似的问题。由于www文件夹下有大量的js文件,Github认为它是一个javascript仓库。添加.gitattributes文件并在其中加入[webprojectfolder]/wwwroot/* linguist-vendored即可解决该问题。谢谢。 - Mustafa

78
根据GitHub帮助页面所述,
GitHub使用开源的Linguist库来确定文件语言以进行语法高亮和存储库统计信息。某些文件很难识别,有时项目包含的库和供应商文件比其主要代码还要多。
因此,您需要查看github/linguist#troubleshooting以解决此问题。
百分比是根据每种语言的代码字节数计算出来的,这些数据可以通过List Languages API获得。如果显示的柱状图上有你不希望看到的语言:
  • 点击统计栏中该语言的名称,查看被识别为该语言的文件列表。
  • 如果你看到了你没有编写的文件,请考虑将这些文件移动到供应商代码路径之一,或使用手动覆盖功能将其忽略。
  • 如果文件被错误分类,请搜索已公开问题,查看是否有其他人已经报告了此问题。任何你能提供的信息,特别是公共存储库的链接,都是有帮助的。
  • 如果没有关于此错误分类的报告,请新建一个问题并包含一个链接到存储库或一个被错误分类的代码示例。

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

来自Monica Powell的文章 "如何在GitHub中更改仓库语言"

研究了如何解决GitHub错误分类项目语言后,我发现解决方案就是告诉GitHub忽略哪些文件。

虽然你仍然想要将这些文件提交到GitHub,因此不能使用.gitignore,但你可以在.gitattributes文件中告诉GitHub的linguist忽略哪些文件

static/* linguist-vendored

这个单行文件告诉GitHub忽略我Flask应用程序中存储CSS和其他资产的static/文件夹中的所有文件。 "使用.gitattributes"部分确实说明了如何标记错误的语言。 例如: 检查你没有编写的代码(如JavaScript库)到你的git repo是一种常见的做法,但这通常会增加项目的语言统计数据,甚至可能导致你的项目被标记为另一种语言。默认情况下,Linguist将在vendor.yml中定义的所有路径视为vendored,并因此不将它们包括在存储库的语言统计信息中。使用linguist-vendored属性来供应商化或取消供应商化路径。
$ cat .gitattributes
special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false

虽然对我有用,但现在我在想如果.gitattribute在.gitignore中,GitHub如何仍然能够使用它,因为显然GitHub需要这个文件,但我不再想要它存在于我的存储库中... - Dave Everitt
在我的情况下,我希望我的GitHub个人资料的README.md显示出来(因为它实际上是该存储库中唯一的文件),所以我使用以下内容创建了.gitattributes: *.md liguist-detectable README.md -linguist-documentation 详细信息链接 - Hicsy

40

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

  1. 切换到你的项目根目录;

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

     touch .gitattributes
    
  3. 按照Linguist library的指示编辑文件,告诉GitHub如何处理它,例如:

  4.  vi .gitattributes
    

    使用 linguist-vendored 可以让 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

  5. Git add、commit 然后 push 到 GitHub。标签会几乎立即被纠正。


2
适用于我,我已经将以下行添加到我的 .gitattributes 文件中:*.java linguist-detectable=false *.dart linguist-language=Dart *.dart linguist-detectable=true android/* linguist-vendored build/* linguist-vendored - Chirag Savsani

23

请使用以下内容替换你的 .gitattributes 文件,它会将所有文件归类为 Java。

 *.* linguist-language=Java

linguist


20

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

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

.gitattributes 文件中进行设置并将文件推送到仓库中。刷新 GitHub 页面以查看语言更改。

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


5
您可以在.gitattributes文件中使用GitHub语言检测选项,避免意外的语言检测(通过文件扩展名或项目子文件夹等方式)。请注意,保留HTML标签。

Only programming languages are included in the language statistics. Languages of a different type (as defined in languages.yml) are not "detectable" causing them not to be included in the language statistics.

Use the linguist-detectable attribute to mark or unmark paths as detectable:

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

4

我有一个项目,开始是用Objective-C编写的,后来完全改成了Swift(新项目,但在同一代码库目录下)。

无论我在.gitattributes文件中使用什么方式(之前答案中提供的所有解决方案),GitHub始终将其识别为Objective-C。

因此,如果你确定项目全部都是一种语言,可以尝试添加以下内容:

# Direct Swift
*.* linguist-language=Swift

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


2
答案很简单:只需在项目终端中添加以下行
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页面,您应该会发现新的更新。

2
如果您想要更改Laravel存储库的语言,则需要将以下行添加到您的.gitattributes文件中:
*.blade.php linguist-vendored

GitHub将Blade文件定义为HTML,但*.html linguist-vendored不起作用。
(注:Blade是一种流行的PHP模板引擎)

2
.gitattributes文件中,可以让Linguist不去确定你不想要的文件语言。
例如,忽略JavaScript文件:
*.js linguist-vendored

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接