J'essaie de définir l'exécutable Git dans IntelliJ pour être le git installé dans le sous-système Windows pour Linux. J'ai essayé différentes méthodes, mais j'ai toujours eu une sorte d'erreur. Aujourd'hui, j'ai installé to Creators Update (version 1703), réinstallé WSL et essayé à nouveau. Voici ce que j'ai fait:
J'ai créé un script .bat:
@echo off
C:\Windows\System32\bash.exe -c "git %*"
Donc, lorsque vous l'exécutez:
C:\Users\Limon\Desktop>bash.bat --version
git version 2.7.4
Alors j'ai alors essayé de définir cette chauve-souris sur l'exécutable git dans IntelliJ:
Et ça a marché! Mais tout le reste échoue, par exemple lorsque j'essaie de tirer ou de créer une branche dans IntelliJ, je reçois:
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.
Des idées sur comment résoudre ce problème? Je ne sais pas vraiment quoi que ce soit à propos du script batch. Cela fonctionne parfaitement en ligne de commande.
Je cherchais un moyen d'utiliser git sur un sous-système WSL Windows pour Linux via Webstorm ou un logiciel Idelli Id.
J'ai essayé la solution de KatoPue, mais j'ai eu l'erreur suivante:
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
Je l'ai résolu en remplaçant le chemin lors de l'envoi de la commande au git de WSL
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%'
Dans PyCharm 2018.1, j'ai eu plusieurs erreurs en essayant de régler Git. Je dois combiner différentes approches pour le faire fonctionner. Le code suivant fonctionne pour moi:
@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:
L'intégration avec Git est maintenant disponible dans WSL via le wrapper WSLGit. J'ai discuté avec PyCharm et ça marche comme un charme. Voici un lien https://github.com/andy-5/wslgit
Changez le double en guillemets simples.
Vous pouvez vous connecter, quels arguments sont fournis à votre fichier bat
@echo off
@echo %*>> %~dp0log.txt
bash.exe -c 'git %*'
Avec cela, j'ai découvert que j'avais quelques problèmes à résoudre.
Pour votre information: avec les créateurs Win10, la mise à jour de piping bash et sa création à partir de programmes Windows fonctionnent correctement.
Dans PhpStorm (2017.2 EAP) je reçois une erreur
Causée par: com.intellij.openapi.vcs.VcsException: 'bash.exe' n'est pas reconnu comme une commande interne ou externe, un programme utilisable ou un fichier de commandes.
Pour solution, je change la dernière ligne en
If %PROCESSOR_ARCHITECTURE% == x86 (
C:\Windows\sysnative\bash.exe -c 'git %command%'
) Else (
bash.exe -c 'git %command%'
)
Travaillé jusqu'à PHPSTORM 2018.3 (ou peut-être une mise à jour de Windows a modifié certains comportements concernant bash.exe). J'utilise Ubuntu 18.04 LTS. Cependant, le chemin de mon bash.exe a changé - il n’est plus dans C:\Windows\Sysnative\bash.exe
.
Pour que les choses fonctionnent à nouveau, j'ai modifié le fichier wslgit.bat d'Elies Lou et défini un nouveau chemin pour 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%'
Pour moi cette solution fonctionne:
Fichier: 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%'
)