GitHub changes repository to the wrong language

GitGithubRepositoryGithub Linguist

Git Problem Overview


I know this isn't a huge deal, but I like my GitHub to be linguistically diversified. I wrote a project in Swift and when I commit it says it's in Objective-C.

I think it might be because the Parse frameworks are written in Objective-C and it detects that, but is there a way to change the display language on the main repository page?

Git Solutions


Solution 1 - Git

I found the simplest thing was to create a file called .gitattributes in the root folder of my repository, and give it these contents:

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

This example tells GitHub/Linguist to ignore all files, and then just look at .js files. My project, https://github.com/aim12340/jQuery-Before-Ready, was listed as HTML because the HTML example files were bigger than the JavaScript files. This file fixes it for me and now it's listed as JavaScript.

Solution 2 - Git

As mentioned in the GitHub help page

> GitHub uses the open source Linguist library to determine file languages for syntax highlighting and repository statistics.
Some files are hard to identify, and sometimes projects contain more library and vendor files than their primary code.

So you need to check with github/linguist#troubleshooting in order to fix this situation.

> The percentages are calculated based on the bytes of code for each language as reported by the List Languages API.
If the bar is reporting a language that you don't expect:

> - Click on the name of the language in the stats bar to see a list of the files that are identified as that language.

  • If you see files that you didn't write, consider moving the files into one of the paths for vendored code, or use the manual overrides feature to ignore them.
  • If the files are being misclassified, search for open issues to see if anyone else has already reported the issue. Any information you can add, especially links to public repositories, is helpful.
  • If there are no reported issues of this misclassification, open an issue and include a link to the repository or a sample of the code that is being misclassified.

Update February 2017 (one year later):

The article "How to Change Repo Language in GitHub" from Monica Powell

> Upon researching how to resolve GitHub misclassifying the language of your projects I found out the solution is as simple as telling GitHub which files to ignore.

> While you still want to commit these files to GitHub and therefore can’t use a .gitignore you can tell GitHub’s linguist which files to ignore in a .gitattributes file

static/* linguist-vendored

> This one-line file told GitHub to ignore all of my files in my static/ folder which is where CSS and other assets are stored for a Flask app

The "Using .gitattributes" section does illustrate how to mark wrong languages.
For instance:

> Checking code you didn't write, such as JavaScript libraries, into your git repo is a common practice, but this often inflates your project's language stats and may even cause your project to be labeled as another language.
By default, Linguist treats all of the paths defined in vendor.yml as vendored and therefore doesn't include them in the language statistics for a repository.

> Use the linguist-vendored attribute to vendor or un-vendor paths.

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

Solution 3 - Git

To make it simple, let me share my steps:

  1. Change directory to your project root folder;

  2. Create a file named .gitattributes using whatever tools of your choice:

     touch .gitattributes
    
  3. Edit the file by following the Linguist library instructions to tell GitHub how to do it, for example:

     vi .gitattributes
    

    Using linguist-vendored can let GitHub know to "skip" detection for this folder and sub-folders:

    src/main/resources/static/* linguist-vendored

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

    project-docs/* linguist-documentation

    OR mark an individual file containing documentation

    documented_code.rb linguist-documentation=true

    This is a bit weird, but you can do also -- to tell GitHub to treat some files with a specific extension (e.g., *.rb) as Java:

    *.rb linguist-language=Java

  4. Git add, commit and then push it to GitHub. The label will be corrected almost immediately.

Solution 4 - Git

Replace your .gitattributes with this, which reclassifies all files as Java.

 *.* linguist-language=Java

[linguist][1] [1]: https://github.com/github/linguist#using-gitattributes

Solution 5 - Git

Create .gitattributes file in the root of your folder. Suppose you want the language to be Java, just copy-paste:

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

in the .gitattributes file and push the file in the repo. Refresh your GitHub page to see the language change.

Note: So, for the desired language make it true and other's false. It should work fine.

Solution 6 - Git

You can avoid unexpected languages detection (by filename extension, or by project subfolder, etc.) by using the GitHub linguist detectable option in your .gitattributes file:

> 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: > > lang-ini > *.kicad_pcb linguist-detectable=true > *.sch linguist-detectable=true > tools/export_bom.py linguist-detectable=false >

Solution 7 - Git

I had a project that was started in Objective-C and changed to Swift completely (new project, but in the same repository directory). GitHub kept identifying it as Objective-C no matter what I used in file .gitattributes (all solutions in previous answers).

So, if the jig is up, and you're sure all the project is one language - you radically add:

# Direct Swift
*.* linguist-language=Swift

Only that fixed the problem :)

Solution 8 - Git

In the .gitattributes file just tell Linguist not to determine file languages which you don't want.

Example for ignoring JavaScript files:

*.js linguist-vendored

Solution 9 - Git

If you want to change the language of the Laravel repository, then add the following line to your .gitattributes file:

*.blade.php linguist-vendored

GitHub defines Blade files as HTML, but *.html linguist-vendored doesn't work.

Solution 10 - Git

The solution which was provided by the expert EamonnM who answered this question above worked in my project, but there are two significant things.

  1. The language in the beginning of the second line of his code was the language you want instead of the language you dislike. Remember to distinguish it.

  2. It seems that you could not type any space before the *. (For example, I should type *.swift linguist-vendored=false when I want to change my language into Swift.)

Solution 11 - Git

I have problem with this also. I created .gitattributes in root of my project. I removed .js and .cs, but .html is still there. This is my .gitattributes file:

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

When I add * linguist-vendored, I don't see anything on GitHub.

Enter image description here

Answer:

It is still the same. .html is still shown.

Solution 12 - Git

The answer is pretty simple:

just add these lines in your project terminal

  1. touch .gitattributes

    After writing this command, the file .gitattributes should be found in project explorer. If this file does not appear, try to show hidden files to find it.

  2. *.* linguist-language=Java

    Change Java with your target language -Swift in your case-

  3. git add .

  4. git commit -m "Change tagged language from Java to Kotlin"

  5. git push

Now after refreshing the GitHub page, you should found the new update.

Solution 13 - Git

  1. Create file ".gitattributes" in the root folder.

If you want your git to detect only .java files, you can use:

*.java linguist-detectable=true
*.* linguist-detectable=false

The . means every other file should not be detected as language. For those who want more than 2 languages to be detected, they can manipulate this file.

Solution 14 - Git

Create a file named .gitattributes to your project root folder. Adding {file_name} linguist-generated=true can do the trick. In my case,

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

worked for me.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionEchizzleView Question on Stackoverflow
Solution 1 - GitEamonnMView Answer on Stackoverflow
Solution 2 - GitVonCView Answer on Stackoverflow
Solution 3 - GitBrightView Answer on Stackoverflow
Solution 4 - GitSumitView Answer on Stackoverflow
Solution 5 - GitSaif SiddiquiView Answer on Stackoverflow
Solution 6 - Gituser8280225View Answer on Stackoverflow
Solution 7 - GitEthan HalprinView Answer on Stackoverflow
Solution 8 - GitRamil MammadovView Answer on Stackoverflow
Solution 9 - GitSlavaView Answer on Stackoverflow
Solution 10 - GitfafaView Answer on Stackoverflow
Solution 11 - GitIvan RadunkovićView Answer on Stackoverflow
Solution 12 - GitMahmoud ZaherView Answer on Stackoverflow
Solution 13 - GitHamza JashariView Answer on Stackoverflow
Solution 14 - GitJackView Answer on Stackoverflow