MaSza
MaSza

Reputation: 465

.gitattributes don't work properly on mac and windows

On my project i use computers with different OS, one is Mac second is with windows. When I use git every change is shown as whole document change. The reason is different end-of-line in these two OS. I read this https://help.github.com/articles/dealing-with-line-endings/ and made a .gitattributes file in the root folder but the problem still exists. This is my .gitattributes file:

# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.

*.css text
*.html text
*.js text

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary

I have no idea why it's not working because I was try a lot of configurations of this file before.

Upvotes: 7

Views: 10397

Answers (2)

Krzysztof
Krzysztof

Reputation: 779

If .gitattributes file was not added with the first commit, the following should be performed to apply attributes locally:

  1. Go to the root of the repository

  2. Check status:

    git status

  3. If it says "nothing to commit, working tree clean", perform:

    git rm --cached -r .

    git reset --hard

The answer is based on https://dev.to/deadlybyte/please-add-gitattributes-to-your-git-repository-1jld

Upvotes: 3

kria
kria

Reputation: 131

The .gitattributes file should be added with the first commit. If you add it a few commits in, you need to normalize all the existing files explicitly.

$ rm .git/index     # Remove the index to force Git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git commit -m "Introduce end-of-line normalization"

See https://git-scm.com/docs/gitattributes

Upvotes: 11

Related Questions