我今天在这里感觉很慢,但我正在尝试合并一些来自第三方开发人员的代码,他们没有使用git。他在印度用dreamweaver编辑过的windows机器上手动向我发送文件(目前他将行尾类型设置为"CR")。当我得到文件时,在我的MacOSX机器上,它们有windows行结尾(vim中的^M),所以我用这个perl命令perl -pe 's/rn|n|r/n/g' orders.dev.php > orders.php
剥离它们,它剥离windows行结尾,在我拥有的文件编辑器中工作得很好。问题是当我试图将该文件添加到git时,整个文件显示为更改。如果行终止是窗口,这对我来说是有意义的,但我剥离了它。在做了一些谷歌搜索之后,我发现了这个github帖子https://help.github.com/articles/dealing-with-line-endings,看起来我可以使用git来强制一个特定的行结束,或者在Mac的情况下告诉它使用任何文件,这些似乎对我没有任何影响。底线是,我不知道如何显示实际开发人员所做的更改。它总是显示整个文件的更改。我错过了什么?
注:很抱歉这么长,但我想表明我不只是抛出一个问题。我已经调查过了。只是因为某种原因,我还没有发现我错过了什么(除了第二杯咖啡)。
使用git diff -w
,您将忽略空白diff(空格/制表符,行结束)。这将帮助您看到差异。
对于git,强制将行尾更改为LF(在提交时),命令为git config --global core.autocrlf true
。