【问题标题】:Files from windows user in git VCS?git VCS中来自Windows用户的文件?
【发布时间】:2013-01-09 16:43:49
【问题描述】:

我今天在这里感觉很慢,但我正在尝试合并一些来自不使用 git 的第三方开发人员的代码。他从他在印度的 windows 机器上手动向我发送文件,在那里他用 Dreamweaver 编辑了这些文件(目前他将行尾类型设置为“CR”)。当我在我的 MacOSX 机器上获取文件时,它们有 windows 行尾(vim 中的 ^M)所以我用这个 perl 命令perl -pe 's/\r\n|\n|\r/\n/g' orders.dev.php > orders.php 去除它们,它去除了 windows 行尾,并且在我拥有的文件编辑器中工作得很好。问题是当我尝试将该文件添加到 git 时,整个文件显示为已更改。如果线路终止是对我有意义的窗口,但我正在剥离它。在做了一些谷歌搜索之后,我发现了这个 github 帖子https://help.github.com/articles/dealing-with-line-endings,看起来我可以使用 git 强制特定的行结束,或者在 Mac 的情况下告诉它使用文件没有的任何东西,这对我来说似乎没有任何区别。底线我无法弄清楚如何显示实际开发人员所做的更改。它始终显示整个文件已更改。我错过了什么?

附:很抱歉篇幅太长,但我想表明我不只是在那里提出问题。我已经调查过了。只是由于某种原因,我还没有偶然发现我错过了什么(除了第二杯咖啡)。

【问题讨论】:

    标签: windows macos git


    【解决方案1】:

    使用git diff -w,您将忽略空格差异(空格/制表符,行尾)。这应该可以帮助您查看差异。

    对于 git,要强制将行尾更改为 LF(提交时),命令为 git config --global core.autocrlf true

    【讨论】:

    • 西蒙谢谢你! git diff -w 正是我正在寻找的。我将 core.autocrlf 更改为 true 并提交了我无法判断它是否调整了行尾的更改,因为我手动执行了该操作,但我在版本历史记录中获得了一个 100% 更改的文件,因此将来它将是无法说出实际发生了什么变化。关于解决这个问题的任何想法?它显示 100% 的原因是行尾去掉了某种空格和/或制表符的组合吗?再次感谢。
    • 我猜标签/空格已被切换。您将始终能够使用git diff -w 正确观看历史记录。在 Github 差异页面上,只需将 ?w=1 附加到 URL 即可获得没有空格的差异。
    • Simon - 谢谢你必须这样做!
    猜你喜欢
    • 2016-05-09
    • 1970-01-01
    • 2011-03-20
    • 2017-04-21
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多