我有一个git存储库,根据特定的文件,它的文件在签出时的行尾应该是CRLF或LR。例如,我希望所有*.sh文件都以LR行结尾签出,而所有*.bat文件都以CRLF结尾。
我一直在尝试实现这一目标,但没有结果,接下来是我的.gitattributes
文件:
* text=auto
#
# Declare files that will always have CRLF line endings on checkout.
#
*.sh text eol=LF
#
# Declare files that will always have LF line endings on checkout.
#
*.bat text eol=CRLF
#
# Denote all files that are truly binary and should not be modified.
#
*.zip binary
*.tar binary
*.exe binary
*.dll binary
*/dropbear binary
*update-binary binary
当我打开.sh
文件或.bat
文件时,两个行尾都是CRLF。我做错了什么?
注意:我是在Windows电脑上开发的。
编辑:系统、全局和本地配置
系统:
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
全球:
merge.tool=kdiff3
diff.guitool=kdiff3
core.editor="C:/Program Files (x86)/GitExtensions/GitExtensions.exe" fileeditor
core.autocrlf=true
credential.helper=!'C:UsersXXXXAppDataRoamingGitCredStoregit-credential-winstore.exe'
user.name=xxxxx.xxxx
user.email=xxxx.xxxx@xxxxx.com
filter.lfs.clean=git-lfs clean %f
filter.lfs.smudge=git-lfs smudge %f
filter.lfs.required=true
push.default=matching
本地:
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly
remote.origin.url=https://github.com/XXXXXX/xxxxxx.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.v2.10.0.remote=origin
branch.v2.10.0.merge=refs/heads/v2.10.0
branch.v2.10.1.remote=origin
branch.v2.10.1.merge=refs/heads/v2.10.1
此外,GitHub的文档说明如下:
或者,您可以通过配置一个特殊的.gitattributes文件来配置Git在每个存储库的基础上管理行尾的方式。该文件被提交到存储库中,并覆盖个人的core.autocrlf设置,确保所有用户的行为一致,无论他们的Git设置如何。
编辑2:
如果我将core.autocrlf
设置为false
并注释.gitattributes
的所有行,则.sh
和.bat
文件都以LF行结尾打开。
eol
属性值与大多数Git一样,区分大小写。您想要:
*.sh eol=lf
*.bat eol=crlf