每个文件末尾的额外回车会导致合并问题

时间:2018-09-21 12:20:51

标签: git git-merge line-endings

在我们的git repo中,我们的文件有时会在行尾添加额外的回车符。当我在vim中查看文件时,我会看到;

<?xml version="1.0" encoding="utf-8"?>^M
<Root>^M
    <Child/>^M
</Root>^M

这些额外的^M将出现在文件的每一行上。当我们合并时,这会导致问题,因为合并的另一端将没有额外的^M,并且我们会遇到许多合并冲突。将选项忽略空白传递给git merge似乎没有帮助,它在整个文件上仍然存在冲突。

我们使用git config core.autoclrf true

我需要两件事;

  1. 如何在我的仓库中搜索所有这些^M?这样我就可以使用一些git ls-files | grep <filter here> | sed 's/^M//'来摆脱它们。
  2. 我如何确定它们的引入方式?

2 个答案:

答案 0 :(得分:0)

我按照@Biffen的建议使用unix2dos(我在Windows上)以及链接问题here中的答案来解决此问题。

答案 1 :(得分:0)

How to normalize working tree line endings in Git?的答案非常适合修复 new 提交。 (请参阅已接受的方法和现代的Git 2.16或更高版本的t1 int, t2 int, t3 text, t4 boolean技巧。)

要更轻松地处理 old 提交,请使用重新规范化扩展选项:git add --renormalize。这会将您当前的git merge -X renormalize [other options you want if any] branch设置应用于要合并的每个文件的所有三个版本。