我们观察到从Perforce迁移到BitBucket后,几乎所有的文件都有Ctrl+M字符。你有BitBucket服务器级别的选项设置,以删除Ctrl+M字符在所有的仓库或从每个repobranch?否则告诉我们,如果任何其他方法,这可以处理。
在Git中存储文本文件的规范方式是用LF结尾,即使你的项目使用其他结尾,也要根据需要在结账时转换行结尾。 听起来你的版本库是CRLF行尾,CR字符也是Ctrl-M(字节13)。
服务器在克隆时是无法修改数据的,因为数据的完整性是由哈希来验证的,因此服务器无法改变所使用的行结束符。
如果你想改变你的repo的行尾,最简单的方法是创建一个名为 .gitattributes
在仓库的根目录下,添加以下内容,然后运行 git add --renormalize .
,然后一起提交。
* text=auto
这将导致你的文件被检查到LF结尾,每个用户都可以控制在他们的系统中使用哪种行结尾。 默认情况下,使用的是平台的本地行结束符。
如果你有一些文件的模式,比如shell脚本或PowerShell文件,必须总是使用一个给定的行尾,那么你可以将这样的行加入到 .gitattributes
:
*.sh eol=lf
*.ps1 eol=crlf
你可以在 "中国 "中阅读更多关于这些选项的信息。gitattributes
手册页。