web-dev-qa-db-ja.com

IntelliJを介したLinux用WindowsサブシステムでのGitの使用

IntelliJのGit実行可能ファイルをLinuxのWindows Subsystemにインストールされたgitに設定しようとしています。いくつかの方法を試しましたが、常に何らかのエラーが発生しました。今日、Creators Update(バージョン1703)にインストールし、WSLを再インストールして再試行しました。

.batスクリプトを作成しました。

@echo off
C:\Windows\System32\bash.exe -c "git %*"

したがって、実行する場合:

C:\Users\Limon\Desktop>bash.bat --version
git version 2.7.4

それで、私はIntelliJのgit実行可能ファイルでこのバットを設定しようとしました: Setting Git executable in IntelliJ

そしてうまくいきました!しかし、他のすべてが失敗します。たとえば、IntelliJでプルまたはブランチしようとすると、次のようになります。

Couldn't check the working tree for unmerged files because of an error.
'C:\Windows\System32\bash.exe' is not recognized as an internal or external command,
operable program or batch file.

これを修正する方法についてのアイデアはありますか?バッチスクリプトについては何も知りません。コマンドラインから完全に動作します。

29
Limon

Linux用WSL Windows SubsystemでgitをWebstormまたはIntelliJアイデアソフトウェアを使用して使用する方法を探していました。

KatoPueのソリューションを試しましたが、次のエラーが表示されました。

fatal: could not read log file 'C:/Program Files/Git/mnt/c/Users/Elies/AppData/Local/Temp/git-commit-msg-.txt': No such file or directory

コマンドをWSLのgitに送信するときにパスを置き換えることで解決しました

Settings > Version Control > Git > Path to Git executable : path_to_wslgit.bat

wslgit.bat:

@echo off
setlocal enabledelayedexpansion
set command=%*
set find=C:\Users\%USERNAME%\AppData\Local\Temp\git-commit-msg-.txt
set replace=/mnt/c/Users/%USERNAME%/AppData/Local/Temp/git-commit-msg-.txt
call set command=%%command:!find!=!replace!%%
echo | C:\Windows\Sysnative\bash.exe -c 'git %command%'
20
Elies Lou

PyCharm 2018.1では、Gitを解決しようとしたときにさまざまなエラーが発生しました。さまざまなアプローチを組み合わせて実行する必要があります。次のコードは私のために働く:

@echo off
setlocal enabledelayedexpansion
set command=%*
If %PROCESSOR_ARCHITECTURE% == x86 (
    echo | C:\Windows\sysnative\bash.exe -c 'git %command%'
) Else (
    echo | bash.exe -c 'git %command%'
)

UPD:

WSLGitラッパーを介してWSL内でGitと統合できるようになりました。私はPyCharmでそれをチェックアウトしました、そしてそれは魅力のような仕事です。ここにリンクがあります https://github.com/andy-5/wslgit

6
Infernion

二重引用符を一重引用符に変更します。

Batファイルに渡される引数を記録できます

@echo off
@echo %*>> %~dp0log.txt
bash.exe -c 'git %*'

それで、私はいくつかのエスケープの問題があることを発見した。

参考までに、Win10の作成者はパイピングbashを更新し、Windowsプログラムから生成することで問題なく動作します。

5
KatoPue

PhpStorm(2017.2 EAP)でエラーが発生します

原因:com.intellij.openapi.vcs.VcsException:「bash.exe」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。

ソリューションについては、最後の行を

If %PROCESSOR_ARCHITECTURE% == x86 (
    C:\Windows\sysnative\bash.exe -c 'git %command%'
) Else (
    bash.exe -c 'git %command%'
)
4

私にとってこのソリューションは機能します:

ファイル:git.bat

@echo off
setlocal enabledelayedexpansion
set command=%*
If %PROCESSOR_ARCHITECTURE% == x86 (
    C:\Windows\sysnative\bash.exe -c 'git %command%'
) Else (
    bash.exe -c 'git %command%'
)
2
Rdey

PHPSTORM 2018.3(またはWindows Updateでbash.exeに関する動作が変更された可能性があります)まで動作していました。 Ubuntu 18.04 LTSを使用しています。ただし、bash.exeのパスが変更されました-C:\Windows\Sysnative\bash.exe

再び機能させるために、Elies Louのwslgit.batを変更し、bash.exeの新しいパスを設定しました。

@echo off
setlocal enabledelayedexpansion
set command=%*
set find=C:\Users\%USERNAME%\AppData\Local\Temp\git-commit-msg-.txt
set replace=/mnt/c/Users/%USERNAME%/AppData/Local/Temp/git-commit-msg-.txt
call set command=%%command:!find!=!replace!%%
echo | C:\Windows\System32\bash.exe -c 'git %command%'
0
mfuesslin