2017-08-09 104 views
1

我要回答我的问题与修复什么解决了我的问题。git - CRLF问题在windows + linux双启动

注意事项downvoters:据我了解,根本原因是各种其他线程讨论(这是我如何解决我的问题)。这篇文章更多地介绍了双启动系统如何引导你解决这个问题。所以不,这个问题/答案不是重复的,而是一个普通类问题的特殊实例,在这个问题上向SO的存储库增加了更多的案例。


在家里:我的代码在Linux中。 LF用作行尾
在办公室:我在windows中编码。用作行尾的CRLF
默认情况下,git的autocrlf功能(https://stackoverflow.com/a/20653073/2715083)保持快乐。

然而,如果你运行一个双引导系统,Linux和Windows,你可以搞自己了下列方式:

  1. git pull你在Linux环境下在Windows环境中工作的一些文件中,一个可以从双启动的linux环境访问的位置。这会修改文件以包含CRLF结尾。
  2. 然后当你打开在Linux中的文件,其中默认的只有LFgit diff会说整个文件被修改,因为每个LF得到了在每一行改为CRLF。 (我被原子,具有这种差异计数内置警告)
+0

这些问题已经已经讨论过[这里](https://stackoverflow.com/questions/19 67370/git-replacement-lf-with-crlf?noredirect = 1&lq = 1),[here](https://stackoverflow.com/questions/3206843/how-line-ending-conversions-work-with-git-core -autocrlf-between-different-operat)和其他许多线程。 [这里](https://stackoverflow.com/a/29888735/365237)是一种干净的工作方式,如果你想重新检查你的文件。 – eis

+0

[git用CRLF代替LF]可能重复](https://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf) – eis

+0

@eis太好客了,看看我的编辑:) – Somjit

回答

1

你所谈论的文本=汽车零件?我不确定如果我需要将它包含在新的.gitattributes文件中,因为当我这样做时,ATOM仍然显示文件被修改为

是的,它的确如此。
要强制Git应用.gitattributes指令,请参阅“Dealing with line endings”。

我首先确定core.autocrlf设置为false。

git config --global core.autocrlf false 

然后:

git add . -u 
git commit -m "Saving files before refreshing line endings" 

rm .git/index 

git reset 

git status 

git add -u 
git add .gitattributes 

git commit -m "Normalize all the line endings" 

你也可以使用,迫使指数重新正常化:

git rm --cached -r . 
git reset --hard 

请参阅 “Force LF eol in git repo and working copy

* text=auto eol=lf 
+0

感谢您的详细步骤!通过强制所有行结束符为'LF',它是否会导致窗口中的任何问题在'CRLF'为标准的地方? – Somjit

+1

@Somjit它取决于文件和IDE的类型。您可以将'* text = auto eol = lf'限制为'* .xxx'(某个扩展名) – VonC

+0

是的,我想大多数代码编辑器都可以。感谢您指出自定义扩展mod。 – Somjit

-1

的FIX

  1. 删除/移动到另一个位置的问题,文件/文件夹
  2. git checkout <hash> <your/files/location>

其中<hash>是最后一次良好提交,并且your/files/location是您想要的文件的位置CRLF问题的电子。这将基本上从您的本地.git存储库恢复旧版本。

为我工作。


如果你知道的东西我错过了,或者错误地解释,不要让我知道

+0

你在规避这个问题。要真正解决它,请使用'.gitattributes'文件 – Philippe

+0

@Philippe你正在谈论'text = auto'部分?我不知道如果我需要将它包含在一个新的'.gitattributes'文件中,因为当我这样做时,ATOM仍然显示文件被修改... – Somjit