【问题标题】:VSCode: use WSL Git instead of Git for WindowsVSCode:使用 WSL Git 而不是 Windows 的 Git
【发布时间】:2017-11-10 12:42:21
【问题描述】:

我想将 WSL(Windows 上的 Bash)Git 与 VSCode 一起使用,而不是用于 Windows 的 Git,以避免安装多个 Git。

我创建了一个简单的 bat 脚本,通过在 WSL 中重定向 git 命令来模拟 git.exe 行为。它在 CMD 中运行良好,但不适用于 VSCode。另外,WSL 是我在 VSCode 中的默认终端。

VSCode settings.json

{
    "git.path": "D:\\tools\\git.bat",
    "terminal.integrated.shell.windows": "C:\\Windows\\Sysnative\\bash.exe"
}

git.bat

@echo off
bash -c 'git %*'

任何想法让 VSCode 与 WSL Git 一起工作?

【问题讨论】:

  • 对我来说奇怪的是,这种方法适用于 ruby​​、rubocop 以及我尝试过的所有其他可执行文件。我不明白为什么它不适用于 git。
  • 这里是官方解决方案:code.visualstudio.com/docs/remote/wsl>。本质上,您只需要安装Remote Development Extension Pack。我遇到的唯一怪癖是,即使您在 zsh 中执行 code .,它也会让您开始使用 bash。

标签: visual-studio-code windows-subsystem-for-linux


【解决方案1】:

自 VS Code 1.34(2019 年 4 月)以来,引入了远程扩展以开发成 WSL:https://code.visualstudio.com/docs/remote/wsl

基本上,VS Code 的服务器实例在 WSL 中启动,允许您从 Windows 上的客户端实例使用所有 WSL 工具(例如 git)。

感谢您指出这一点@Noornashriq Masnon

【讨论】:

    【解决方案2】:

    我自己创建了一个小工具来解决这个问题,hosted it on GitHub

    基本的 git 功能似乎可以工作,例如查看更改和提交。

    可以下载一个现成的二进制文件from the Releases page

    其中一个问题是需要将输入路径从 Windows 表示 (C:\Foo\Bar) 转换为 WSL 中的 Linux 路径 (/mnt/c/Foo/Bar),然后再转换回 git 输出中的路径。

    例如VSCode中的Git插件使用命令

    git rev-parse --show-toplevel
    

    找到 git 存储库的根目录,但是使用 WSL git 这当然会返回一个需要为 Windows 上的 VSCode 翻译的 Linux 路径。

    【讨论】:

    • 谢谢您,您的 exe 运行良好!我没有考虑过路径问题。我会尝试在我的脚本中解决这个问题,并在我有时间的时候在这里发布解决方案。
    【解决方案3】:

    提供 bash exec 的完整路径:

    git.bat

    @echo off
    c:\windows\sysnative\bash.exe -c "git %*"
    

    【讨论】:

    • 这个解决方案根本没有改变任何东西。
    • 不得不提这个 git.bat 应该在你的 PATH 中的某个地方,wsl git %* 也可以工作
    【解决方案4】:

    您可以先尝试wslpath,如果失败,您可以尝试正常的git 命令。这并不理想,但它确实有效。

    见:Use WSL git inside VS Code from Windows 10 17046

    【讨论】:

      猜你喜欢
      • 2019-02-11
      • 2019-03-25
      • 2017-09-18
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-11
      • 2015-05-19
      相关资源
      最近更新 更多