GitHub 将存储库更改为错误的语言
Posted
技术标签:
【中文标题】GitHub 将存储库更改为错误的语言【英文标题】:GitHub changes repository to the wrong language 【发布时间】:2016-04-15 07:16:49 【问题描述】:我知道这没什么大不了的,但我喜欢我的 GitHub 语言多样化。我在Swift 写了一个项目,当我提交它时说它在Objective-C。
我认为这可能是因为 Parse 框架是用 Objective-C 编写的,它会检测到这一点,但是有没有办法更改主存储库页面上的显示语言?
【问题讨论】:
How to change the language of a repository on GitHub?的可能重复 【参考方案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-detectable
README.md -linguist-documentation
@ 987654332@【参考方案3】:
为了简单起见,让我分享一下我的步骤:
将目录更改为您的项目根文件夹;
使用您选择的任何工具创建一个名为 .gitattributes 的文件:
touch .gitattributes
按照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
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 提供的解决方案在我的项目中有效,但有两点很重要。
他的代码第二行开头的语言是你想要的语言,而不是你不喜欢的语言。记得区分哦。
您似乎无法在*
之前键入任何空格。 (例如,当我想将我的语言更改为 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】:答案很简单:
只需在项目终端中添加这些行
touch .gitattributes
编写此命令后,应该在项目资源管理器中找到文件 .gitattributes。如果此文件没有出现,请尝试显示隐藏文件以找到它。
*.* linguist-language=Java
用您的目标语言更改 Java - Swift 在您的情况下-
git add .
git commit -m "Change tagged language from Java to Kotlin"
git push
现在刷新 GitHub 页面后,您应该会发现新的更新。
【讨论】:
【参考方案13】:为您的项目根文件夹创建一个名为 .gitattributes 的文件。添加file_name linguist-generated=true
可以解决问题。就我而言,
mvnw.cmd linguist-generated=true
mvnw linguist-generated=true
为我工作。
【讨论】:
【参考方案14】:-
在根文件夹中创建文件“.gitattributes”。
如果你想让你的 git 只检测 .java 文件,你可以使用:
*.java linguist-detectable=true
*.* linguist-detectable=false
. 表示不应将所有其他文件检测为语言。 对于那些想要检测超过 2 种语言的人,他们可以操作此文件。
【讨论】:
以上是关于GitHub 将存储库更改为错误的语言的主要内容,如果未能解决你的问题,请参考以下文章
如何将与 GitHub 的连接从 SSH 更改为 HTTPS?