任何人都可以解释为什么“git status”显示在Linux上的共享下运行时修改的文件?

时间:2012-02-22 22:44:21

标签: windows linux git

文件托管在Windows机器上,我想知道我是否冷使用我的Linux机器来管理git,所以我安装了共享。然后我看到,当执行git状态时,所有文件都显示为已修改,并且当尝试从此共享推送时,它不会接受我的密钥。

图片来自同一个快照,同一文件夹。

Linux ---------------------------------------------- ---------- winGitBash

enter image description here

3 个答案:

答案 0 :(得分:5)

您是否检查了两台机器上的crlf设置?一个可能是重新创建文件为CRLF(Windows)而另一个只有LF结尾。这对于“修改”状态就足够了。

不要忘记您的个人设置以及回购设置。

答案 1 :(得分:5)

This blog post很好地解释了这一点。基本上最好设置:

  

git config --global core.autocrlf true

答案 2 :(得分:1)

git在换行符上的行为取决于几种配置:

  • core.eol
  • core.autocrlf
  • .gitattributes file

对于你的情况,我怀疑下面可能是原因。

  • 在您的git"数据库"(。git)中,所有文本文件都以换行符LF存储。
  • 在检查git转换期间,您的本地仓库是在Windows下克隆的 LF CRLFgit status
  • 当您在Linux / cygwin下执行LF时,因为" cygwin git"认为它有效 在" * inux" environemnt,以便那个git认为本地回购应该是 使用CRLF签出文本文件。当它实际找到CRLF时,会认为LF 已从# under linux # save your change git stash # delete working directory git rm --cached -r . # re-checkout git reset --hard 更改,因此git报告它们已被修改。

要验证这一点(不解决此问题),您可以执行以下操作:

git status

再次运行{{1}},您将/应该看到输出报告没有修改。

参考文献:

Mind the end of your line