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

这些文件是托pipe在Windows机器上,我想知道如果我冷用我的Linux机器来pipe理混帐,所以我登上了共享。 然后我看到,当做混帐状态所有文件显示为已修改,并试图从这个共享推它不会接受我的密钥。

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

Linux ————————————————- ——- winGitBash

在这里输入图像说明

这篇博文很好地解释了它。 基本上这是一个好主意,设置:

git config –global core.autocrlf true

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

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

git如何在新行上运行取决于几种配置:

  • core.eol
  • core.autocrlf
  • .gitattributes文件

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

  • 在你的git“database”(.git)中,所有的文本文件都以换行符LF存储。
  • 您的本地回购克隆在Windows下,在检查git转换LFCRLF
  • 当你在Linux / cygwin下执行git status ,由于“cygwin git”认为它在“* inux”环境下工作,所以git认为本地repo应该用LF来检出文本文件。 当它实际上发现CRLF ,它认为CRLFLF改变,所以git报告它们被修改。

要验证这个(不解决这个问题),你可以这样做:

 # under linux # save your change git stash # delete working directory git rm --cached -r . # re-checkout git reset --hard 

并再次运行git status ,您将/应该看到输出报告没有修改。

参考文献:

注意你的路线的结束