【问题标题】:Line endings issue between Mac and WindowsMac和Windows之间的行尾问题
【发布时间】:2015-05-07 05:01:09
【问题描述】:

我有一台 MacBook,并在 Parallels VM 中运行 Windows。我的开发主要是在 Visual Studio 中,但我喜欢将 Git 与 Mac shell 一起使用(就像它比 Windows 更好)。

当我做一个 git diff 来确定提交之间发生了什么变化时,我得到了谚语行结尾的“变化”,这使得 git 认为变化比实际变化大得多。

我知道这是一个古老的问题,我已经根据很多人的不同建议进行了大量研究,但我无法解决这个问题。在 SO Post 中找到了最有希望的信息,但它并没有解决我的问题。

以下是我的 .gitconfig 中的一些相关行...

[core]
    autocrlf = false
    safecrlf = false

另外,我的仓库根目录中有一个 .gitattributes,它只包含...

* text eol=crlf

我可以做些什么来让 Git 在执行差异时不再认为行尾更改是真正的更改?同样,我使用 Mac shell 来查看 Windows 文件,所以这可能是我的问题的一部分。

谢谢!

【问题讨论】:

  • 你能解决这个问题吗?这也困扰着我的团队。快把我逼疯了。
  • 我刚从 Windows 端开始使用 Git。我无法解决它。但是在 Windows 端使用 Git 可以避免这个问题。
  • 你们有没有机会解决这个问题?

标签: git


【解决方案1】:

我将gdiff 别名为:

git diff -w origin/`git branch | sed --quiet "s/* \(.*\)/\1/p"`

但你可以这样做:

git diff -w

【讨论】:

    【解决方案2】:

    使用转换实用程序,例如 Perl,perl -i -pne "s/\n/\r\n/g" 文件名

    unix2dosdos2unix

    另见http://en.wikipedia.org/wiki/Newline#Conversion_utilities

    有关 GIT 的配置,请参阅另一个答案:Force LF eol in git repo and working copy

    【讨论】:

    • 感谢您的回复。我想在 Windows 文件上保留 CRLF 行结尾,但是当使用 git 查看 Mac 端的差异时,看不到不同的行结尾作为更改。我认为转换实用程序实际上会改变行尾。
    猜你喜欢
    • 1970-01-01
    • 2016-02-12
    • 2019-03-03
    • 1970-01-01
    • 2011-07-03
    • 2010-09-30
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    相关资源
    最近更新 更多