繁体   English   中英

Windows/WSL2/VS 代码的 Git 非常奇怪的问题

[英]Very strange issue with Git for Windows/WSL2/VS Code

我有 Windows 10,我正在使用 VS Code,Git 用于 Windows,WSL2 用于 Ubuntu 20.04 LTS(我通过 Windows 终端访问)。

我需要重置我的电脑,所以我 tar.gz 了我在 Ubuntu 上的本地存储库,并将 tar.gz 存储在我的辅助驱动器上。

重置后,我重新安装了所有应用程序。

我将我的 repo 解压缩到 Ubuntu 中的相同位置,然后我执行了 chown -R gesslar:gesslar /path 以确保它上面有我当前的 ID。

在 Windows 终端中,使用 WSL2 配置文件,我 cd 到 /path 并执行 git 状态,它说我没有要提交的更改。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

但是,在 VS Code 中,我通过转到目录并键入code. 在我在 Windows 终端的 WSL 配置文件中,它说我有 950 个待处理的更改。

在此处输入图像描述

如果我使用 Git Bash,我会得到类似的读数,它会显示大量标记为已删除的文件在此处输入图像描述

对我来说超级奇怪的是,尽管被标记为已删除,但该文件实际上在那里。 在此处输入图像描述

在未跟踪文件下,它说的是新文件,实际上并不存在。

请如果有人对此有什么想法,我将不胜感激。 我怀疑它与 Windows 的 Git 有关,因为我认为 VS Code 正在使用它来确定更改,它在 Git Bash 中,我看到了这种奇怪之处。

请注意,我知道有些人可能会建议我重新克隆,但我的工作目录是生产的副本,而 our.gitignore 忽略了我需要在我的工作目录中使用的数千个数据文件,它们到处都是. 如果可能的话,重建环境绝对是最后的努力。

这听起来真的很愚蠢,但是,我发现还没有为 VS Code 安装 Remote WSL 扩展。

这不会阻止 Git 对 Windows 的混淆,但是,它确实使 VS Code 能够使用 git 的 WSL 版本,而不是 Windows 的 Git。

因此,结果是 VS Code 现在知道我的 WSL2 实例中的 git 存储库/工作目录的实际 state。

谢谢你的帮助,TTT。 非常感谢您的回复,我确实从中学到了一些东西。

还有一件事要检查,就是行尾。 如果您在 windows 和 WSL 中使用相同的 repo 和不同的 git 可执行文件,它们会感到困惑并将文件标记为已修改,因为行尾是该系统的错误类型。 您可以通过相应地配置 git 中的行结尾来避免这种情况。

如果您在 windows 中开发,那么git config core.autocrlf true会在检出文件时将行结尾转换为 CRLF (Windows)。

如果您改为在 Linux 中开发,则git config core.autocrlf input将在 repo 和 Linux 系统中保留 LF 结尾,但同时在 Windows 结帐中保留 CRLF 行结尾。

您还可以通过添加--global选项来全局设置这些设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM