git rebase混淆了文件“文件末尾没有换行符”

时间:2016-12-07 17:24:06

标签: git newline cvs rebase

我的Git存储库设置如下:

  • “Central”裸存储库
  • 2个克隆的repositorys
  • 存储库中的“test.txt”文件

该文件如下所示:

Line 1
Line 2
Line 3
Line 4
Line 5

最后没有换行符(\ n,\ n \ r \ n,\ r \ n)。最后一个字符是“5”。

现在我在第一个克隆的存储库中修改文件,如下所示:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6

我提交此更改并将其推送到我的中央存储库。同样,这个文件最后没有换行符。

在我的第二个存储库中,我不拉。但是我改变了这样的文件:

Line 1
Line 2
Line 4
Line 5

第3行已删除。此文件最后也没有换行符。现在我做出这个改变。然后我用--rebase拉动,并且重新提交的提交中的文件看起来像这样:

Line 1
Line 2
Line 4
Line 5Line6

我知道文本文件应该以标准换行符结尾。但有没有办法避免这种行为?

我的系统设置如下:

  • 操作系统:Windows 10
  • Git:2.11.0.windows.1
  • Git-UI:Git Extensions 2.49
  • KDiff3:0.9.97(32位)

研究完成:

  • 当文件末尾有换行符时,不会发生此行为。
  • 如果更改的文件包含换行符,则至少会显示冲突。但自动合并并不好。

执行此操作的原因:

我正在从CVS迁移,并希望保留一个直接的提交历史记录。这就是为什么我想使用变基。但是迁移的存储库包含一些文本文件末尾没有换行符的文本文件。解决方法是在存储库中的所有文本文件中添加换行符。但我想避免大规模的改变。

0 个答案:

没有答案