git:总是强制回购 windows 行结尾
git: always force windows line endings for repo
我想强制我的 repo 始终使用 windows 行结尾,无论用户的环境或 core.autocrlf
的设置如何。我读过有关使用 .gitattributes
来设置行尾的信息,但无法实现。我的 .gitattributes
文件如下所示:
* text=auto
* text eol=crlf
添加这个文件后,我运行git add --renormalize .
和git add .gitattributes
,然后推送到远程。但是,这并没有覆盖我的全局 core.autocrlf
设置。我想要的是将我的 windows 行结尾推送到 Bitbucket,但我得到的是 Bitbucket 中的 linux 行结尾。
如何强制我的 git 客户端为特定回购推送 Windows 行结尾,而不考虑用户对 core.autocrlf
的设置?
首先,您有两个相互冲突的设置。 * text=auto
和 * text eol=crlf
不兼容。你需要选择一个。
但是,遗憾的是,两者都不会如你所愿。 Git 没有 "always convert to CR/LF in the repository" 选项。您唯一的选项控制进入工作目录的内容。
例如,* text eol=crlf
会将 Windows 风格的行结尾 放在工作目录中 但会将 Unix 风格的行放在存储库中。
您可以使用 * -text
完全禁用行结束配置,但这只会停止进行文本转换并按原样签入文件,因为它存在于磁盘上。它不会消除 Unix 用户使用 Unix 风格的行结尾重写文件的可能性。
我鼓励您忽略 存储库中存在的文件的内容,而是关注您在工作目录中想要的内容。如果你总是想要 CR/LF 在磁盘上然后使用 * text eol=crlf
.
我想强制我的 repo 始终使用 windows 行结尾,无论用户的环境或 core.autocrlf
的设置如何。我读过有关使用 .gitattributes
来设置行尾的信息,但无法实现。我的 .gitattributes
文件如下所示:
* text=auto
* text eol=crlf
添加这个文件后,我运行git add --renormalize .
和git add .gitattributes
,然后推送到远程。但是,这并没有覆盖我的全局 core.autocrlf
设置。我想要的是将我的 windows 行结尾推送到 Bitbucket,但我得到的是 Bitbucket 中的 linux 行结尾。
如何强制我的 git 客户端为特定回购推送 Windows 行结尾,而不考虑用户对 core.autocrlf
的设置?
首先,您有两个相互冲突的设置。 * text=auto
和 * text eol=crlf
不兼容。你需要选择一个。
但是,遗憾的是,两者都不会如你所愿。 Git 没有 "always convert to CR/LF in the repository" 选项。您唯一的选项控制进入工作目录的内容。
例如,* text eol=crlf
会将 Windows 风格的行结尾 放在工作目录中 但会将 Unix 风格的行放在存储库中。
您可以使用 * -text
完全禁用行结束配置,但这只会停止进行文本转换并按原样签入文件,因为它存在于磁盘上。它不会消除 Unix 用户使用 Unix 风格的行结尾重写文件的可能性。
我鼓励您忽略 存储库中存在的文件的内容,而是关注您在工作目录中想要的内容。如果你总是想要 CR/LF 在磁盘上然后使用 * text eol=crlf
.