我知道这没什么大不了的,但我喜欢我的 GitHub 语言多样化。我用Swift编写了一个项目,当我提交它时说它在Objective-C中。
我认为这可能是因为 Parse 框架是用 Objective-C 编写的并且它检测到了这一点,但是有没有办法更改主存储库页面上的显示语言?
我知道这没什么大不了的,但我喜欢我的 GitHub 语言多样化。我用Swift编写了一个项目,当我提交它时说它在Objective-C中。
我认为这可能是因为 Parse 框架是用 Objective-C 编写的并且它检测到了这一点,但是有没有办法更改主存储库页面上的显示语言?
.gitattributes
我发现最简单的方法是在存储库的根文件夹中创建一个名为的文件,并为其提供以下内容:
* linguist-vendored
*.js linguist-vendored=false
这个例子告诉 GitHub/Linguist 忽略所有文件,然后只查看 .js 文件。我的项目https://github.com/aim12340/jQuery-Before-Ready被列为 HTML,因为 HTML 示例文件比 JavaScript 文件大。这个文件为我修复了它,现在它被列为 JavaScript。
GitHub 使用开源语言学家库来确定用于语法突出显示和存储库统计的文件语言。
有些文件很难识别,有时项目包含的库和供应商文件比它们的主要代码更多。
因此,您需要检查github/linguist#troubleshooting
以解决这种情况。
百分比是根据List Languages API报告的每种语言的代码字节数计算的。
如果栏报告的语言是您不期望的:
- 单击统计信息栏中的语言名称可查看标识为该语言的文件列表。
- 如果您看到不是您编写的文件,请考虑将文件移动到vendored code 的路径之一,或使用手动覆盖功能忽略它们。
- 如果文件被错误分类,请搜索未解决的问题以查看是否其他人已经报告了该问题。您可以添加的任何信息,尤其是公共存储库的链接,都会很有帮助。
- 如果没有报告此错误分类的问题,请打开一个问题并包含指向存储库的链接或被错误分类的代码示例。
2017 年 2 月更新(一年后):
来自Monica Powell的文章“如何在 GitHub 中更改 Repo 语言”
在研究如何解决 GitHub 错误分类项目语言的问题后,我发现解决方案就像告诉 GitHub 忽略哪些文件一样简单。
虽然您仍想将这些文件提交到 GitHub,因此无法使用 a
.gitignore
,但您可以告诉 GitHub 的语言学家在文件中忽略哪些.gitattributes
文件
static/* linguist-vendored
这个单行文件告诉 GitHub 忽略我文件
static/
夹中的所有文件,该文件夹是为 Flask 应用程序存储 CSS 和其他资产的地方
“使用.gitattributes
”部分确实说明了如何标记错误的语言。
例如:
将您未编写的代码(例如 JavaScript 库)检查到您的 git 存储库中是一种常见的做法,但这通常会夸大您项目的语言统计信息,甚至可能导致您的项目被标记为另一种语言。
默认情况下,Linguist 将其中定义的所有路径vendor.yml
视为已售出,因此不会将它们包含在存储库的语言统计信息中。将 linguist-vendor 属性用于供应商或非供应商路径。
$ cat .gitattributes
special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false
为了简单起见,让我分享一下我的步骤:
将目录更改为您的项目根文件夹;
使用您选择的任何工具创建一个名为.gitattributes的文件:
touch .gitattributes
按照Linguist 库说明编辑文件,告诉 GitHub 如何执行此操作,例如:
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
Git 添加、提交,然后将其推送到 GitHub。标签将几乎立即被更正。
在文件夹的根目录中创建.gitattributes
文件。假设您希望语言是 Java,只需复制粘贴:
*.java linguist-detectable=true
*.js linguist-detectable=false
*.html linguist-detectable=false
*.xml linguist-detectable=false
在.gitattributes
文件中并在 repo 中推送文件。刷新您的 GitHub 页面以查看语言更改。
注意:因此,对于所需的语言,使其为真而其他为假。它应该可以正常工作。
通过在文件中使用GitHub linguist 可检测选项,您可以避免意外的语言检测(通过文件扩展名或项目子文件夹等):.gitattributes
语言统计中仅包含编程语言。不同类型的语言(如 定义
languages.yml
)不是“可检测的”,导致它们不包含在语言统计中。使用该
linguist-detectable
属性将路径标记或取消标记为可检测:*.kicad_pcb linguist-detectable=true *.sch linguist-detectable=true tools/export_bom.py linguist-detectable=false
在.gitattributes文件中,告诉语言学家不要确定您不想要的文件语言。
忽略 JavaScript 文件的示例:
*.js linguist-vendored
我有一个项目是在 Objective-C 中启动并完全更改为 Swift(新项目,但在同一个存储库目录中)。无论我在文件.gitattributes中使用什么(之前答案中的所有解决方案),GitHub 都会一直将其标识为 Objective-C。
因此,如果夹具已启动,并且您确定所有项目都是一种语言 - 您从根本上添加:
# Direct Swift
*.* linguist-language=Swift
只有这样才能解决问题:)
如果您想更改 Laravel 存储库的语言,则将以下行添加到您的.gitattributes
文件中:
*.blade.php linguist-vendored
GitHub 将Blade文件定义为 HTML,但*.html linguist-vendored
不起作用。
回答上述问题的专家 EamonnM 提供的解决方案在我的项目中有效,但有两件重要的事情。
他的代码第二行开头的语言是你想要的语言,而不是你不喜欢的语言。记得区分。
您似乎无法在*
. (例如,*.swift linguist-vendored=false
当我想将我的语言更改为 Swift 时,我应该输入。)
我也有这个问题。我在项目的根目录中创建了 .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仍然显示。
答案很简单:
只需在您的项目终端中添加这些行
touch .gitattributes
编写此命令后,应在项目资源管理器中找到.gitattributes文件。如果此文件没有出现,请尝试显示隐藏文件以找到它。
*.* linguist-language=Java
用你的目标语言改变 Java - Swift 在你的情况下 -
git add .
git commit -m "Change tagged language from Java to Kotlin"
git push
现在刷新 GitHub 页面后,您应该会发现新的更新。
在项目根文件夹中创建一个名为 .gitattributes 的文件。添加{file_name} linguist-generated=true
可以解决问题。就我而言,
mvnw.cmd linguist-generated=true
mvnw linguist-generated=true
为我工作。
如果你希望你的 git 只检测 .java 文件,你可以使用:
*.java linguist-detectable=true
*.* linguist-detectable=false
。 _ 表示不应将所有其他文件检测为语言。对于那些想要检测超过 2 种语言的人,他们可以操作此文件。