首頁>Computer>source

標题几乎是不言自明的.到目前為止,這是我尝試過的:

function Git {
    $cmd = $args[0]
    for ($i = 1; $i -lt $args.count; $i++) {
        $cmd = $cmd + " " + $args[$i]
    }
    echo $(wsl git $cmd)
}

例如致電 git clone <clone URL> 给我 git: 'clone <clone URL>' is not a git command. See 'git --help'. 因此,似乎PowerShell正在將帶引號的字元串傳遞给 git 命令,並匯致它失败... or is there some other issue with my code that I'm missing?

希望這對任何PowerShell专家来說都是足够的資訊,可以向我指出正確的方向...尽管要了解我的實際核心問题以及為解決该問题所做的工作,請繼續阅讀...

核心問题/現有解決方案

我正在尝試重定向所有 git 在PowerShell或CMD視窗中键入到wSL的命令,因為這是我唯一拥有 git的地方 已安裝 and I'd like to keep it that way .当我已经在wSL中安裝了所有需要的东西時,我认為安裝windows版Git或任何其他大型第三方工具没有任何意義。

唯一的缺點是:

  1. 打字 wsl git... 每当我每天想要多次键入此類命令的人进行克隆,拉動,推入等操作時,都会變得非常繁琐且非常累人
  2. 這也破壞了windows VS Code安裝中的Git擴充套件名,使其没有安裝windows的Git。

我已经尝試了两種解決這些問题的方法,即https://github.com/hangxingliu/wslgit< / a>和https://github.com/andy-5/wslgit,但两者 他们给我同樣的錯誤資訊:

PS C:\Users\Kenny> git --version
/usr/bin/wslgit.sh: line 83: cd: C:\Users\Kenny: No such file or directory
fatal: can not cd to C:\Users\Kenny (C:\Users\Kenny)

另請參见前迴购中的此看似相關的GitHub問题.

我正在執行windows 10.0.19042.0,即windows 10 Home的最新稳定版本.此版本或以前的版本中肯定有一些重大更改,因為前仓庫的所有者在鏈接的問题頁面上的評論中引用了此內容:

I have updated wslgit.dev.sh a little. First of all mount -t drvfs =>不返迴任何內容,發生在更新到2004年之後。 所以我更新了wslgit.dev.sh檔案...現在它對我有用.之後,生成新的 wslgit.sh 並更換旧的。

我尝試了他们的建議,但是這對我或問题的OP似乎都没有帮助.因此,我花了很多時間編寫一个自定義PowerShell函式来達到類似的結果。

我現在已经花了一整天的時間来尝試解決這个看似簡單的問题(整个上午都在尝試使現有的解決方案正常工作,而剩下的一天都在PowerShell解決方法上).因此,我將不胜感激:

  1. 對两種現有解決方案提供给我的錯誤訊息的解釋並修複,或者
  2. 可以執行我想要的工作的PowerShell函式,而不必在冗长的命令(IMO)中添加冗长的引數名稱或其他任何內容。
最新回復
  • 5月前
    1 #

    通過 args 陣列似乎直接對我有用,如:

    function Git {
        echo $(wsl git $args)
    }
    

    至少對於您提到的簡單克隆案例(和簡單的 Git status )。

    虽然這听起来似乎是您最需要的,但未来的讀者應该意識到,對於更複雜的用例(例如需要使用者輸入的任何git命令,使用本地windows路徑作為目標或使用git命令),這可能会失败 UNC路徑(包括 \\WSL$\ )。

  • windows 10家庭v1809就地升級錯誤(旨在更新為20H2)
  • pivot table:LibreOffice等效於SQL" some_column的count(*)組"