需要解决的问题:
我有一个包含单个.md
文件的存储库,其中包含我正在写的一篇文章。
我从几台不同的计算机编辑文件,一台运行 Linux,另一台运行 Windows。
现在在 Windows 中查看git diff
我已经进行了一些更改的 a ,我可以看到我的文章显示为很好地分隔的文本行......所有即将被删除并被一个长行替换,其中段落由^M
s 分隔。
我知道这^M
指的是 Windows 的 CLRF 行尾。
结果diff
表明我在 Linux 中启动了该文件(完全有可能;我不记得了),然后将其保存在 Windows 中,并且所有行尾都已被替换。
我希望能够在两个操作系统中打开文件,并按应有的diff
方式显示行,并获得显示换行符(而不是^M
占位符)并且仅更改实际内容的结果。
我试过的:
我已经完成了一些背景阅读,阅读了关于行尾和 Git 设置的精彩概述,甚至尝试按照另一个 Stack Overflow 问题中的命令进行操作。
.gitattributes
就目前而言,我在存储库的顶层有一个文件,我已将其提交给存储库本身。它只包含两行:
# These files are text and should be normalised (convert Windows' CLRF to LF)
*.md text
我试过这个(来源):
git rm --cached -r .
git reset --hard
git add .
git commit -m "Normalize line endings"
而这个(来源):
git rm --cached -r .
git config core.autocrlf input
git diff --cached --name-only -z | xargs -0 git add
git commit -m "Fixed crlf issue"
在第二种情况下,最后一个命令告诉我没有什么可以提交的。(我也不喜欢改变的想法,core.autoclrf
因为我试图纯粹通过 来做到这一点.gitattributes
,但我很沮丧。)
很高兴回答问题并提供更多详细信息。有什么想法我可能会出错吗?我错过了一步吗?