如何更改行结束设置

有没有一个文件或菜单,让我改变设置如何处理行尾?

有3个选项:

  1. 结帐Windows风格,提交Unix风格

    在检出文本文件时,Git会将LF转换为CRLF。 提交文本文件时,CRLF将被转换为LF。 对于跨平台项目,这是Windows上推荐的设置(“core.autocrlf”设置为“true”)

  2. 按原样签出,提交Unix风格

    在检出文本文件时,Git不会执行任何转换。 提交文本文件时,CRLF将被转换为LF。 对于跨平台项目,这是Unix上推荐的设置(“core.autocrlf”设置为“input”)。

  3. 按原样签出,按原样提交

    在检出或提交文本文件时,Git不会执行任何转换。 不build议跨平台项目select此选项(“core.autocrlf”设置为“false”)

正常的方法来控制这是使用git config

例如

git config –global core.autocrlf true

有关详细信息,请将此链接向下滚动到Pro Git到名为“core.autocrlf”的部分


如果你想知道这个文件保存在哪里,你可以运行命令:

git config –global – 编辑

和git全局configuration文件应该在文本编辑器中打开,你可以看到从哪里加载文件。

在OS中使用的行结尾格式

  • Windows: CR (回车\r )和LF (LineFeed \n )对
  • OSX,Linux: LF (LineFeed \n

我们可以configurationgit以两种方式为每个操作系统自动更正行结束格式。

  1. Git全局configuration
  2. 使用.gitattributes文件

全局configuration

在Linux / OSX中

 git config --global core.autocrlf input 

这将在您提交时将任何CRLF修复为LF

在Windows中

 git config --global core.autocrlf true 

这将确保当你在窗口结帐时,所有LF将转换为CRLF

.gitattributes文件

保留.gitattributes文件是一个好主意,因为我们不希望我们团队中的每个人都设置它们的configuration。 这个文件应该保持在回购的根path,如果存在一个,git会尊重它。

 * text=auto 

这会将所有文件视为文本文件,并在结帐时将其转换为操作系统行结束,并自动返回LF 。 如果想明确告诉,那么使用

 * text eol=crlf * text eol=lf 

第一个是结帐,第二个是提交。

 *.jpg binary 

将所有.jpg图像视为二进制文件。 所以不需要转换

对于可以重新分配给所有开发人员的存储库设置解决scheme,请查看.gitattributes文件中的text属性。 这样,开发人员就不必手动在存储库上设置自己的行结尾,而且由于不同的存储库可能有不同的行结束风格,全球core.autocrlf不是最好的,至less在我看来。

例如,在给定path上取消设置此属性[ – 文本]将强制git不要触摸行结束时签入和签出。 在我看来,这是最好的行为,因为大多数现代文本编辑可以处理这两种types的行结束。 另外,如果您作为开发人员仍然希望在签入时执行换行转换,则仍然可以设置path以匹配某些文件,或者在存储库中设置eol属性(在.gitattributes中)。

还要看看这个相关的post,它更详细地描述了.gitattributes文件和文本属性: 使用Git,最好的CRLF(回车,换行符)处理策略是什么?

如果您想要将已经更改为UNIX格式的文件格式从PC格式转换回来。

(1)您需要重新安装乌龟GIT,并在“结束转换”部分确保您select了“按原样检查 – 按原样检查”选项。

(2)并保持原来的状态。

(3)一旦安装完成

(4)将所有转换为UNIX格式的文件扩展名写入文本文件(extensions.txt)。

 ex:*.dsp *.dsw 

(5)将文件复制到克隆中在GITBASH中运行以下命令

 while read -ra; do find . -type f -name "$a" -exec dos2unix {} \; done<extension.txt