与cygwin和Github for Windows的行结尾

时间:2013-03-30 09:40:15

标签: git cygwin github-for-windows

我希望能够使用Github for Windows应用程序以及使用Cygwin(在Windows上)命令行中的git来处理我的git项目。

但是当我从一个切换到另一个时,我继续遇到线路结尾的问题。

如果使用命令行工具repo没有更改,它将希望使用Github应用程序修改所有文件。如果我使用Github应用程序进行更改,那么它将再次使用命令行工具进行更改。

经过大量的测试后,我无法使这两种工具都能正常工作。

什么能让它发挥作用?在我目前设置的.gitatributes中: * text = auto 但它没有帮助

3 个答案:

答案 0 :(得分:5)

当您的存储库配置与存储库中的数据不一致时,会出现GHfW错误。

如果您将文件配置为转换为CRLF行结尾 - 例如,将core.autocrlf设置为true,但您的存储库中的blob已经是CRLF格式(可能是因为某人)尚未将core.autocrlf设置为true,则可能会出现此问题。

在这种情况下,GHfW以不同于msysgit的方式翻译存储库中的CRLF。结果,一些或所有文件显得很脏。

我建议您在整个团队中使用一致的CRLF方法,以避免git工具对于他们应该对您的行结尾做什么感到不明确。也就是说,这个bug最近在libgit2中修复了,这个库是GHfW的基础,并且应该很快进入GHfW。

答案 1 :(得分:4)

在Windows中使用Git Bash和Cygwin会让git混淆。那就是:

  • 克隆/结帐Git Bash下的回购。在结账时,git认为它在Windows上,因此通常使用CRLF来检出文本文件。
  • 在Cygwin中运行git,git认为它在Linux上并且已经检查了repo 在Linux中(实际上不是,根据上一步)。因此,当git在Cygwin中看到CRLF时,它认为LF被修改为CRLF,以便git报告大量文件更改。

解决此问题的一种方法是在repo的root中创建.gitattributes文件 添加如下行:

*.txt text eol=lf

当遇到带有后缀.txt的文件时使用LF时告诉git 写入“数据库(.git)”并签出工作目录。

reference here

答案 2 :(得分:1)

我使用GitHub 2.7.0.24在我的Windows上克隆了一个存储库(带有CRLF的文件)。 然后我想使用我的cygwin的git版本2.1.4。

我通过添加" autocrlf = true"编辑了.git / config。在[核心]部分下。 (在&#34之前有一个真正的制表; autocrlf = true")

现在,cygwin的git说我没有修改我最新的。

我将CRLF保留在文件上,因为它们是在原始存储库中以这种方式创建的。

我将不再使用GitHub应用程序......

我注意到合并冲突正在添加<<<< ====>>>>没有CR的行,但是当我解决冲突时它们将被删除。

相关问题