如何更改行结束设置

时间:2012-05-02 17:45:07

标签: git msysgit

是否有文件或菜单可以让我更改如何处理行结尾的设置?

有3种选择:

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

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

  2. 按原样结帐,提交Unix风格

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

  3. 按原样结帐,按原样提交

    Git在结账或提交时不会执行任何转换 文本文件。跨平台不建议选择此选项 项目(" core.autocrlf"设置为" false")

7 个答案:

答案 0 :(得分:395)

控制此操作的常用方法是使用git config

例如

git config --global core.autocrlf true

有关详细信息,请在this link to Pro Git中向下滚动到名为“core.autocrlf”的部分


如果您想知道保存的文件是什么,可以运行命令:

git config --global --edit

并且git全局配置文件应该在文本编辑器中打开,您可以看到该文件的加载位置。

答案 1 :(得分:121)

OS中使用的行结束格式

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

我们可以通过两种方式将git配置为自动纠正每个操作系统的行结束格式。

  1. Git Global配置
  2. 使用.gitattributes文件
  3. 全局配置

    在Linux / OSX中
    git config --global core.autocrlf input
    

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

    在Windows中
    git config --global core.autocrlf true
    

    这将确保您在Windows中结帐时,所有LF都会转换为CRLF

    .gitattributes文件

    保留.gitattributes文件是一个好主意,因为我们不希望团队中的每个人都设置其配置。该文件应保留在repo的根路径中,如果存在,则git会尊重它。

    * text=auto
    

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

    * text eol=crlf
    * text eol=lf
    

    第一个用于结账,第二个用于提交。

    *.jpg binary
    

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

答案 2 :(得分:28)

  

对于可以重新分发给所有开发人员的存储库设置解决方案,请查看text文件中的.gitattributes属性。这样,开发人员不必在存储库上手动设置自己的行结尾,并且因为不同的存储库可以具有不同的行结束样式,所以至少在我看来,global core.autocrlf并不是最好的。

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

另请查看此相关帖子,其中更详细地介绍了.gitattributes文件和文本属性:What's the best CRLF (carriage return, line feed) handling strategy with Git?

答案 3 :(得分:2)

If you want to convert back the file formats which have been changed to UNIX Format from PC format.

(1)You need to reinstall tortoise GIT and in the "Line Ending Conversion" Section make sure that you have selected "Check out as is - Check in as is"option.

(2)and keep the remaining configurations as it is.

(3)once installation is done

(4)write all the file extensions which are converted to UNIX format into a text file (extensions.txt).

ex:*.dsp
   *.dsw

(5) copy the file into your clone Run the following command in GITBASH

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

答案 4 :(得分:2)

对我来说,运行命令的窍门是什么

git config auto.crlf false

在项目文件夹中,我希望它专门用于一个项目。

该命令通过添加以下行来更改路径{project_name} /。git / config(fyi .git是一个隐藏文件夹)中的文件

[auto]
    crlf = false

在文件末尾。我想更改文件的方法也一样。

答案 5 :(得分:1)

.gitattributes 文件

最简单的方法是在您的存储库中使用本地 .gitattributes 文件。

您也可以更改特定文件扩展名的行尾

*           text=auto     # auto
*.txt       text
*.vcproj    text eol=crlf # windows line-endings
*.sh        text eol=lf   # linux line-endings
*.jpg       -text

这也覆盖了全局默认值,因此它的可移植性更强,并使 repo 在不同的机器上更可靠。

答案 6 :(得分:0)

以下步骤对我有用

在根项目文件夹中添加一个 git 属性(这对即将到来的文件很有用)

* text=auto

*.tf  eol=lf
*.tfvars  eol=lf
*.yml  eol=lf

执行下面的命令后支持已经存在的文件

find ./ -type f \( -iname \*.tf -o -iname \*.tfvars -o -iname \*.md -o -iname \*.yml \) -print0 | xargs -0 dos2unix

dos2unix .gitignore
dos2unix .gitattributes