我问这个问题的原因是我个人认为在Windows上设置autocrlf = input
很有意义,但是,我在Google上四处搜寻,没有人推荐它。似乎人们通常在true
和false
和* text=auto
之间争论。
因此,在Windows上,我不使用notepad.exe(它不能处理LF),而是始终使用代码编辑器。我相信这个世界上的记事本用户和这个世界上的git用户是不同的人,因此,正确渲染LF并不是问题。
到目前为止,我已经将autocrlf = input
设置了一年多了,没有出现任何问题。我个人觉得它很整洁,因为它避免了git进行的所有来回转换,比true
或auto
更加安全。
我担心自己做得不好。等我有潜在的危险吗?
答案 0 :(得分:2)
我不确定您的问题到底是什么。您似乎已经直接从文档中复制了对autocrlf=input
设置所做的“理解”。因此,您了解它的作用,并且知道您想要它做什么。
当它不是所希望的行为时,危害就是得到该行为;如果您知道这是理想的行为,那是什么问题?
答案 1 :(得分:0)
尽管@LightBender已在评论中回答了问题,但您始终可以自己做一些实验:
在一个空目录中,创建一个新的裸仓库:git --bare init
在另外两个目录中,执行git clone <path to bare repo>
在其中之一中设置:git config core.autocrlf input
在第二个git config core.autocrlf false
创建包含多行文本的示例文本文件,并将其推送到裸仓库中。
更改以第一个克隆结尾的行并尝试推送更改-git将无法注册任何更改,并且更改的行结尾将保留在本地。
还更改第二个克隆中的单行文本以引起冲突。
观察冲突的文件。您可以看到整个文件被标记为冲突,而不是单个受影响的行。
另一种练习是相反的顺序。
简而言之:要避免任何潜在的问题,只需确保将所有参与者都推入远程终端时都使用相同的行尾约定。