Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 有人能解释一下原因吗;“git状态”;在linux上的共享下运行时是否将文件显示为已修改?_Windows_Linux_Git - Fatal编程技术网

Windows 有人能解释一下原因吗;“git状态”;在linux上的共享下运行时是否将文件显示为已修改?

Windows 有人能解释一下原因吗;“git状态”;在linux上的共享下运行时是否将文件显示为已修改?,windows,linux,git,Windows,Linux,Git,这些文件托管在一台windows计算机上,我想知道我是否冷用我的Linux机器来管理git,所以我安装了共享。然后我看到,当执行git状态时,所有文件都显示为已修改,当尝试从该共享推送时,它不会接受我的密钥 图像同时来自同一快照、同一文件夹。 Linux------------------------------------------winGitBash 您是否检查了这两台机器上的crlf设置?一个可能正在将文件重新创建为CRLF(Windows),而另一个只有LF结尾。对于“修改”状态而言,

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

图像同时来自同一快照、同一文件夹。

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


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

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

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

git config--global core.autocrlf true


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

  • core.eol
  • core.autocrlf
  • .git属性文件
对于你的情况,我怀疑以下可能是原因

  • 在git“数据库”(.git)中,所有文本文件都以换行符
    LF
    存储
  • 在签出git转换期间,您的本地repo在Windows下被克隆
    LF
    进入
    CRLF
  • 当您在Linux/cygwin下执行
    git状态时,因为“cygwin-git”认为它正在工作
    在“*inux”环境下,所以git认为本地回购应该
    使用
    LF
    签出文本文件。当它实际找到
    CRLF
    时,它认为
    CRLF
    已从
    LF
    更改,因此git报告它们已修改
要验证此问题(而不是修复此问题),您可以执行以下操作:

# under linux 

# save your change
git stash

# delete working directory
git rm --cached -r .

# re-checkout
git reset --hard
然后再次运行
git status
,您将/应该看到输出报告没有修改

参考资料:


git diff
怎么说这些文件中有修改?