Override .gitattributes text=auto in Windows

2019-05-10 17:13发布

This is pretty unintuitive:

C:\python-tdl\examples\termbox>git config core.autocrlf
false

C:\python-tdl\examples\termbox>git commit termbox.py
warning: LF will be replaced by CRLF in examples/termbox/termbox.py.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in examples/termbox/termbox.py.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in examples/termbox/termbox.py.
The file will have its original line endings in your working directory.
Aborting commit due to empty commit message.

According to various media with core.autocrlf=false there should be no linefeed conversion at all.

In project root I discovered .gitattributes with the line:

# Auto detect text files and perform LF normalization
* text=auto

If I comment it, the warning goes away. The question - how can I override this .gitattibutes setting automatically?

2条回答
何必那么认真
2楼-- · 2019-05-10 17:34

.gitattributes overrides all config settings, so it really can't be overridden; it is the "overrider," so to speak. While you can simply remove the line, this will cause inconsistent behavior on other developers' machines if they have core.autocrlf=true. So the best bet would be to add the following line to .gitattributes: * -text. This will disable CRLF processing for all files.

查看更多
淡お忘
3楼-- · 2019-05-10 17:59

At least in modern versions of git, .git/info/attributes (or $GIT_DIR/info/attributes) overrides .gitattributes for local configuration.

Use * !text to use the value of core.autocrlf, or * -text to force no conversion.

See the documentation for gitattributes and the text attribute.

Also note: core.eol, the eol attribute

查看更多
登录 后发表回答