在Windows计算机上,我正在考虑在.gitconfig中设置autocrlf = true
。我团队中的其他人都采用了这种方式,因此我们在回购中最终混合了lf
和crlf
。我考虑了一些选择,这似乎是阻力最小的途径...
我注意到的一件事是git checkout -p
失败时patch does not apply
出现错误autocrlf = true
。如果我将其更改回false
,它将按预期工作。
autcrlf = true
与checkout --patch
不兼容,还是我需要设置其他选项才能使其正常工作?
有趣的是,git add --patch
与autocrlf = true
一样正常工作。
答案 0 :(得分:2)
是,git checkout --patch
可与行尾翻译一起正常使用。该补丁几乎肯定不会应用,因为您的配置不匹配。
团队中的每个人都需要使用相同行结尾配置。 core.autocrlf=true
不是团队中一个人可以启用的选项;每个人都需要相同设置。那是因为如果您有core.autocrlf=false
,那么您就是在告诉Git磁盘上的内容与存储库中的内容相同。如果您使用的是Windows,则表示您要签入Windows样式的行尾(\r\n
)文件。如果您有一个启用core.autocrlf=true
的同事,那么您告诉Git磁盘上的内容具有Windows样式的行尾,而存储库中的内容具有Unix样式的行尾(\n
)。 / p>
但是您的同事告诉git一个谎言,因为存储库中的内容实际上包含\r\n
。
这些设置不匹配时,可能会发生各种奇怪的事情,包括补丁无法应用之类的事情。
您应该改为:
在* text=auto
文件中设置.gitattributes
。这样可以确保在存储库中工作的每个人都具有相同的设置,因为配置实际上是已签入,而不是每个人都必须记住要正确配置的内容。
重新标准化存储库,以使存储库内容实际与您声明的内容匹配。您可以通过git add --renormalize .
并检查其中的内容来完成此操作。
完成此操作后(每个人都更新了本地工作文件夹),您的git apply --patch
应该会正常运行。