Git 与 Mac 和 Windows 同时使用时会产生不必要的冲突

Git when used with Mac and Windows simultaneously gives unnecessary conflicts

我有一个 git 存储库,我通常通过我的 mac 笔记本电脑处理它。我之前还在我的 windows 笔记本电脑上克隆了 repo(使用 git bashcygwin),一切都很好,但是今天当我使用 git pull 时,我得到了几个 merge conflicts 尽管我的 windows 笔记本电脑没有本地更改。

我认为 mac 中的文件夹可能使用 /(正斜杠)和 windows \(反斜杠),但我不确定.

谁能告诉我为什么会这样以及如何解决这个问题?

路径中的文件夹分隔符不能做到这一点,git 在这个意义上足够聪明。

空格不同:

  • Mac 使用不同的结束行(0x0d 而不是 windows 中的 0x0d 0x0a
  • 制表符也可能不同,具体取决于文本编辑器设置(制表符在机器 1 上是 \t,而在机器 2 上是 4-8 个空格)

这个问题的解决方案是 --ignore-all-space 标志,所以:

git merge --ignore-all-space ...

在不同操作系统的同一个存储库上工作时,您应该在存储库级别定义适当的行尾,或者如果您是唯一的用户,请配置您的 Git 客户端以在需要时进行行尾转换。示例 here (Github) and here (official Git documentation).

您最有可能做的是在 windows

上配置 CR+LF 校验
git config --global core.autocrlf true

并强制 LF 提交 Mac。

git config --global core.autocrlf input

处理每次合并的空白差异很快就会变得烦人和麻烦。