Git 与 Mac 和 Windows 同时使用时会产生不必要的冲突
Git when used with Mac and Windows simultaneously gives unnecessary conflicts
我有一个 git 存储库,我通常通过我的 mac 笔记本电脑处理它。我之前还在我的 windows 笔记本电脑上克隆了 repo(使用 git bash
和 cygwin
),一切都很好,但是今天当我使用 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
处理每次合并的空白差异很快就会变得烦人和麻烦。
我有一个 git 存储库,我通常通过我的 mac 笔记本电脑处理它。我之前还在我的 windows 笔记本电脑上克隆了 repo(使用 git bash
和 cygwin
),一切都很好,但是今天当我使用 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
处理每次合并的空白差异很快就会变得烦人和麻烦。