Github изменяет репозиторий на неправильный язык

107

Я знаю, что это не так уж важно, но мне нравится, что мой Github лингвистически разнообразен. Я написал проект на Swift, и когда я фиксирую его, он говорит, что он на Objective C.

Я думаю, это может быть потому, что фреймворки Parse написаны на Objective C, и он это обнаруживает, но есть ли способ изменить язык отображения на главной странице репозитория?

Echizzle
источник

Ответы:

127

Я обнаружил, что самым простым было создать файл с именем .gitattributesв корневой папке моего репозитория и передать ему следующее содержимое:

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

В этом примере github / linguist игнорируют все файлы, а затем просто просматривают файлы .js. Мой проект https://github.com/aim12340/jQuery-Before-Ready был указан как HTML, потому что файлы примеров HTML были больше, чем файлы JS. Этот файл исправляет это для меня, и теперь он указан как JavaScript

EamonnM
источник
5
просто создайте новый файл .gitattributes в корневой папке репо с содержимым выше, мгновенное исправление!
Gob00st
Самый превосходный. У меня был проект Scala, который был обозначен как проект CSS. Не хорошо .;)
Objektwerks
5
Возможно, фиктивный комментарий, но если вам интересно, что именно делать, 1. Следуйте указаниям @ Gob00st в его комментарии и 2. Замените ".js" расширением ваших основных языковых файлов.
Элизабет
Большое спасибо. Я просмотрел много статей, но ни одна из них не работала для меня, кроме этой.
Modo
У меня была аналогичная проблема для моего основного проекта ASP.NET. Github подумал, что это репозиторий javascript из-за количества файлов js в папке www. Добавление файла .gitattributes с помощью [webprojectfolder] / wwwroot / * linguist-vendored исправило это. Спасибо.
Мустафа
64

Как упоминалось на странице справки GitHub

GitHub использует библиотеку Linguist с открытым исходным кодом для определения языков файлов для выделения синтаксиса и статистики репозитория.
Некоторые файлы трудно идентифицировать, а иногда проекты содержат больше библиотек и файлов поставщиков, чем их основной код.

Поэтому вам нужно связаться с github/linguist#troubleshooting, чтобы исправить эту ситуацию.

Проценты рассчитываются на основе байтов кода для каждого языка, как сообщает List Languages ​​API .
Если полоса сообщает на неожиданном языке:

  • Щелкните название языка на панели статистики, чтобы просмотреть список файлов, которые определены как этот язык.
  • Если вы видите файлы, которые не создавали , рассмотрите возможность перемещения файлов по одному из путей для поставляемого кода или используйте функцию ручного переопределения, чтобы игнорировать их.
  • Если файлы классифицируются неправильно, поищите открытые проблемы, чтобы узнать, не сообщил ли уже кто-нибудь о проблеме. Любая информация, которую вы можете добавить, особенно ссылки на публичные репозитории, будет полезна.
  • Если нет сообщений о проблемах с этой ошибочной классификацией, откройте проблему и включите ссылку на репозиторий или образец кода, который неправильно классифицируется.

Обновление, февраль 2017 г. (год спустя):

Статья Моники Пауэлл « Как изменить язык репо в GitHub »

Изучив, как разрешить GitHub неправильно классифицировать язык ваших проектов, я обнаружил, что решение так же просто, как указать GitHub, какие файлы следует игнорировать.

Хотя вы все еще хотите зафиксировать эти файлы в GitHub и, следовательно, не можете использовать, .gitignore вы можете указать лингвисту GitHub, какие файлы следует игнорировать в .gitattributesфайле.

static/* linguist-vendored

Этот однострочный файл велел GitHub игнорировать все мои файлы в моей static/папке, где хранятся CSS и другие ресурсы для приложения Flask.

Раздел «Использование .gitattributes» действительно показывает, как помечать неправильные языки.
Например:

Проверка кода, который вы не писали, например библиотек JavaScript, в репозиторий git - обычная практика, но это часто приводит к завышению языковой статистики вашего проекта и может даже привести к тому, что ваш проект будет помечен как другой язык .
По умолчанию Linguist рассматривает все пути, определенные в, vendor.ymlкак поставленные, и поэтому не включает их в языковую статистику для репозитория.

Используйте атрибут linguist-vendored для путей поставщика или отмены поставщика.

$ cat .gitattributes
special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false
VonC
источник
Сработало для меня, хотя теперь интересно, как это все еще может работать на GitHub, если .gitattribute находится в .gitignore, поскольку GitHub, очевидно, нужен файл, но я больше не хочу, чтобы он в моем репо ...
Дэйв Эверитт
1
.gitattributes, а не .gitattribute
Дерзу 01
не знал, что существуют .gitattributes. Спасибо +1
scipsycho
33

Чтобы было проще, позвольте мне поделиться своими шагами:

  1. Измените каталог на корневую папку вашего проекта;

  2. Создайте файл с именем .gitattributes, используя любые инструменты по вашему выбору:

    коснитесь .gitattributes

  3. Отредактируйте файл, следуя инструкциям библиотеки Linguist, чтобы сообщить 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 add, commit, а затем отправьте его в Github, метка будет исправлена ​​почти сразу.

Яркий
источник
Работал для меня, я добавил следующие строки в свой файл .gitattributes *.java linguist-detectable=false *.dart linguist-language=Dart *.dart linguist-detectable=true android/* linguist-vendored build/* linguist-vendored
Чираг Савсани
16

Замените ваши .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, чтобы увидеть изменение языка.

Примечание : Итак, для желаемого языка сделайте его истинным, а для другого - ложным. Он должен работать нормально.

Саиф Сиддики
источник
2

У меня был проект, который был запущен на Objective-C и полностью изменен на Swift (новый проект, но в том же каталоге репозитория). Github продолжал идентифицировать его как Objective-C, независимо от того, что я вставлял в gitattributes. (все решения выше)

Итак, если приспособление готово, и вы уверены, что весь проект на одном языке - вы радикально добавляете:

введите описание изображения здесь

Только это устранило проблему :)

Итан Хэлприн
источник
2

В файле .gitattributes просто скажите Linguist не определять языки файлов, которые вам не нужны.

Пример игнорирования файлов Javascript.

*.js linguist-vendored
Рамиль Мамедов
источник
2

Вы можете избежать неожиданного обнаружения языков (по расширению или по вложенной папке проекта и т. Д.), Используя опцию github linguist detectable : в вашем файле .gitattributes :

В статистику языка включаются только языки программирования. Языки другого типа (как определено в 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когда хочу изменить свой язык на быстрый.)

фафа
источник
1

У меня тоже с этим проблемы. Я создал .gitattributes в корне моего проекта. Я удалил .js и .cs, но .html все еще существует. Это мои .gitattributes:

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

Когда я добавляю * linguist-vendred, я ничего не вижу на GitHub.

Спасибо за вашу помощь.

введите описание изображения здесь

Ответ:

По-прежнему отображается .html.

Иван Радункович
источник
++++++++++++++++
Дмитрий Пасько
0

Создайте файл с именем .gitattributes в корневой папке проекта. Добавление {file_name} linguist-generated=trueможет сделать свое дело. В моем случае,

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

работал у меня.

разъем
источник
0

Ответ довольно прост:

просто добавьте эти строки в свой проектный терминал

  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 вы должны найти новое обновление.
Махмуд Захер
источник
-1
# add this two lines 
*.* linguist-language=Swift

project-docs/* linguist-documentation
веселый
источник
4
Можете ли вы добавить пояснение в свой код?
Стефан Хогенбум,