如何防止 Git/Gitlab 修改 EOL 字符?
How to keep Git/Gitlab from modifying EOL character?
我有一个实用程序可以在 Windows 和 Linux 上 运行。但是,当我通过 Windows 将代码检入 GitLab 时,它会将“cr”添加到 EOL 字符,使其成为“crlf”。
我尝试将“.gitattributes”添加到存储库分支的根目录,条目如下:
*.sh 二进制文件
和
*.sh 文本 eol=lf
然而,当我在不同的位置检查分支时,“crlf”仍然存在。
我一直在使用这些 URL 作为参考:
How do I make Git treat a file as binary?
有什么想法吗?
Git 的推荐方法是使用以下内容:
*.sh text eol=lf
这意味着该文件是一个文本文件,它应该始终使用 LF 字符,这正是 shell 文件所需要的。但是,当您这样做时,您需要执行 git add --renormalize .
然后提交更改和 .gitattributes
文件。否则,如果您已经签入了以 CRLF 结尾的文件,则不会发生任何变化。
如果你真的有二进制文件,比如小图片,你可以这样做:
*.jpg binary
但是,如果你在这种情况下这样做,因为存储库已经包含 CRLF 结尾,文件不会被修改,所以你仍然会以 CRLF 结尾。对于真正的二进制文件,如图像,这就是您想要的,但对于 shell 脚本,这将是不可取的。
请注意,如果您的存储库中还有其他文本文件,您也可以这样做:
*.c text
这将启用自动行结束转换,或者如果您只想自动猜测所有剩余的文件类型,您可以这样做:
* text=auto
这将根据文件的前几千字节内是否包含 NUL 字节来猜测文件是文本文件还是二进制文件。请注意,您仍然需要执行 git add --renormalize .
并提交结果更改和 .gitattributes
才能生效。
如果在 运行 git add --renormalize .
并提交后您仍然看到本地工作树中的变化,请尝试使用 git grep -lP '\r' HEAD:FILE
(替换 FILE
)查看文件是否有HEAD
修订版末尾的 CRLF。如果不是,那你做对了。
我有一个实用程序可以在 Windows 和 Linux 上 运行。但是,当我通过 Windows 将代码检入 GitLab 时,它会将“cr”添加到 EOL 字符,使其成为“crlf”。
我尝试将“.gitattributes”添加到存储库分支的根目录,条目如下:
*.sh 二进制文件
和
*.sh 文本 eol=lf
然而,当我在不同的位置检查分支时,“crlf”仍然存在。
我一直在使用这些 URL 作为参考:
How do I make Git treat a file as binary?
有什么想法吗?
Git 的推荐方法是使用以下内容:
*.sh text eol=lf
这意味着该文件是一个文本文件,它应该始终使用 LF 字符,这正是 shell 文件所需要的。但是,当您这样做时,您需要执行 git add --renormalize .
然后提交更改和 .gitattributes
文件。否则,如果您已经签入了以 CRLF 结尾的文件,则不会发生任何变化。
如果你真的有二进制文件,比如小图片,你可以这样做:
*.jpg binary
但是,如果你在这种情况下这样做,因为存储库已经包含 CRLF 结尾,文件不会被修改,所以你仍然会以 CRLF 结尾。对于真正的二进制文件,如图像,这就是您想要的,但对于 shell 脚本,这将是不可取的。
请注意,如果您的存储库中还有其他文本文件,您也可以这样做:
*.c text
这将启用自动行结束转换,或者如果您只想自动猜测所有剩余的文件类型,您可以这样做:
* text=auto
这将根据文件的前几千字节内是否包含 NUL 字节来猜测文件是文本文件还是二进制文件。请注意,您仍然需要执行 git add --renormalize .
并提交结果更改和 .gitattributes
才能生效。
如果在 运行 git add --renormalize .
并提交后您仍然看到本地工作树中的变化,请尝试使用 git grep -lP '\r' HEAD:FILE
(替换 FILE
)查看文件是否有HEAD
修订版末尾的 CRLF。如果不是,那你做对了。