wsl:git pull暂时认为存在局部更改

wsl:git pull暂时认为存在局部更改,git,windows-subsystem-for-linux,Git,Windows Subsystem For Linux,我在windows linux子系统(WSL)下签出了一个git repo。repo以前是使用gitforwindows在文件系统上创建的,我习惯于从windows和WSL访问它 我定期从WSL中的备用远程设备(git pull alt_remote master)同步。通常这会触发合并提交,编辑器打开,我保存消息,合并完成 取而代之的是,pull在pull中列出了一些文件子集,这表明我有将被删除的本地更改,我需要提交或隐藏它们。我没有对这些文件进行任何更改 几秒钟后,我再次尝试相同的命令,它成

我在windows linux子系统(WSL)下签出了一个git repo。repo以前是使用gitforwindows在文件系统上创建的,我习惯于从windows和WSL访问它

我定期从WSL中的备用远程设备(git pull alt_remote master)同步。通常这会触发合并提交,编辑器打开,我保存消息,合并完成

取而代之的是,pull在pull中列出了一些文件子集,这表明我有将被删除的本地更改,我需要提交或隐藏它们。我没有对这些文件进行任何更改

几秒钟后,我再次尝试相同的命令,它成功了,就好像没有问题一样


我怀疑新行策略和git如何修改文件以匹配配置设置存在一些问题。是否有一种推荐的方法可以在其中一个/两个Windows/WSL上配置git,这样它们就可以彼此友好地玩,并且我不会遇到这些失败?我已设置core.autocrlf=true。

我建议您使用
core.autocrlf输入

如果您在Linux或macOS系统上使用LF行结尾,那么您不希望Git在签出文件时自动转换它们;但是,如果意外引入了一个以CRLF结尾的文件,那么您可能需要Git来修复它。通过将core.autocrlf设置为input,可以告诉Git在提交时将CRLF转换为LF,但不能反过来:

$git config--global core.autocrlf输入

我猜,但这只是一个猜测,因为我不使用Windows,因此不需要WSL,因为Windows的统计数据与WSL的统计数据不同。这使得Git索引中的stat数据从另一个子系统的角度来看是“错误的”。如果是这样,强制刷新索引也可以解决问题。(
rm.git/index;git reset
可以做到这一点,但请注意,这非常难看。)我的观察是,它与文件系统相关,但除此之外,我不确定到底发生了什么。在第一次git pull失败后,如果我在之后立即运行git pull,我会得到相同的错误,但文件数量较少,然后再次运行它会成功。因此,文件系统上的某些状态似乎正在迎头赶上。这似乎不是一个真正的问题,所以,但一个问题,以开放的WSL或git的人。