Git can't check out on Linux with LF a file that was stored with CRLF

前端 未结 3 1501
盖世英雄少女心
盖世英雄少女心 2021-01-24 02:56

I am checking out a third party project \"libjpeg\" from https://github.com/winlibs/libjpeg on Linux (it is just one example, actually I have the same problem with many other pr

相关标签:
3条回答
  • 2021-01-24 03:00

    The problem is that you have core.autocrlf set to true. The documentation says the following:

    Setting this variable to "true" is the same as setting the text attribute to "auto" on all files and core.eol to "crlf". Set to true if you want to have CRLF line endings in your working directory and the repository has LF line endings.

    You definitely don't want to set that variable to true on a Unix or Linux system; it should be set to false unless you're on a Windows system (and even then there are better alternatives).

    0 讨论(0)
  • 2021-01-24 03:20

    You more than likely have set up some of the flags that tell git to mess up with EOL formats (and those flags are a mess). If you would rather have git not mess with them, you can do so by adding this to .gitattributes:

    * -text
    

    That way git won mess with the files when you add them or checkout. If you need some other kind of thing (like, real automatic EOL conversion), you might check the available things there.

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

    Either way, steer away from using the flags you used on the question. They are a mess.

    0 讨论(0)
  • 2021-01-24 03:21

    Old, but still correct answer about EOL-headache in Git

    In short:

    core.autocrlf = false 
    core.eol = native
    

    will produce correct EOLs on all and any mix of OSes

    0 讨论(0)
提交回复
热议问题