在Windows上设置autocrlf =输入有什么害处?

时间:2018-12-21 16:39:43

标签: git

我问这个问题的原因是我个人认为在Windows上设置autocrlf = input很有意义,但是,我在Google上四处搜寻,没有人推荐它。似乎人们通常在truefalse* text=auto之间争论。

因此,在Windows上,我不使用notepad.exe(它不能处理LF),而是始终使用代码编辑器。我相信这个世界上的记事本用户和这个世界上的git用户是不同的人,因此,正确渲染LF并不是问题。

到目前为止,我已经将autocrlf = input设置了一年多了,没有出现任何问题。我个人觉得它很整洁,因为它避免了git进行的所有来回转换,比trueauto更加安全。

我担心自己做得不好。等我有潜在的危险吗?

2 个答案:

答案 0 :(得分:2)

我不确定您的问题到底是什么。您似乎已经直接从文档中复制了对autocrlf=input设置所做的“理解”。因此,您了解它的作用,并且知道您想要它做什么。

当它不是所希望的行为时,危害就是得到该行为;如果您知道这是理想的行为,那是什么问题?

答案 1 :(得分:0)

尽管@LightBender已在评论中回答了问题,但您始终可以自己做一些实验:

  1. 在一个空目录中,创建一个新的裸仓库:git --bare init

  2. 在另外两个目录中,执行git clone <path to bare repo>

  3. 在其中之一中设置:git config core.autocrlf input
    在第二个git config core.autocrlf false

  4. 创建包含多行文本的示例文本文件,并将其推送到裸仓库中。

  5. 更改以第一个克隆结尾的行并尝试推送更改-git将无法注册任何更改,并且更改的行结尾将保留在本地。

  6. 还更改第二个克隆中的单行文本以引起冲突。

  7. 观察冲突的文件。您可以看到整个文件被标记为冲突,而不是单个受影响的行。

另一种练习是相反的顺序。

简而言之:要避免任何潜在的问题,只需确保将所有参与者都推入远程终端时都使用相同的行尾约定。