需要修复的问题:
我有一个仓库,其中包含一个单独的.md
文件,里面包含我正在写作的一篇文章。
我从几台不同的计算机上编辑文件,其中一台运行Linux,另外几台运行Windows。
现在在Windows中查看经过一些更改的git diff
时,我可以看到我的文章显示为漂亮的分隔线......即将被一个长行替换,其中原来的段落被^M
分隔。
我知道^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纯粹地完成这一过程,但是我感到很沮丧。)很乐意回答问题并提供更多细节。您有任何想法我可能错过了什么步骤吗?