WSLでWSLのGitとGit for Windowsをうまく使い分ける
要約
function g () {
if [[ `pwd -P` == /mnt/* ]]; then
git.exe "$@"
else
git "$@"
fi
}
WSL めっちゃ便利
function g () {
if [[ `pwd -P` == /mnt/* ]]; then
git.exe "$@"
else
git "$@"
fi
}
Windows Subsystem for Linux というものがあります。
Windows 上で Linux を動かすことのできるもので、/mnt/c/
から Windows の C ドライブにアクセスすると Linux のコマンドでやりたい放題できるという、とても楽しく便利なものです。
が……
Git めっちゃ遅い
Git がなぜだかめちゃくちゃ遅い場合があります。
どのくらい遅いかと言えば、「うっかり Powerline のような Git の情報を見せてくれるリッチなプロンプトを使っていると、プロンプトを表示するだけで数十秒もの遅延が生まれるレベル」です。
なにゆえ……?
Windows ファイルシステムにある Git リポジトリの操作がめっちゃ遅い
↓ 先人
Q. それじゃあ Windows ファイルシステムにある Git リポジトリを扱いたい場合どうすれば……?
Windows ファイルシステムでは Git for Windows を使うようにする
A. 素直に Git for Windows 使いましょう。あとプロンプトの Git 情報表示機能は OFF にしましょう。
適当に~/.zshrc
などで、WSL の Git と Git for Windows を自動で使い分けてくれる関数を定義しましょう。
ここではg
という名前で定義します。
function g () {
if [[ `pwd -P` == /mnt/* ]]; then
git.exe "$@"
else
git "$@"
fi
}
pwd
にオプションがあるなんて初めて知りました……。
(シンボリックリンクから Windows ファイルシステムに入ったときのためのオプションです)。
おそらくこれで、g status
などしても問題なく動いてくれると思います。補完は効きませんが。
おわりに(ポエム)
今ではすっかり、何をするにも WSL から行うようになりました。
コマンドプロンプト? PowerShell? そんなのもありましたね(環境構築時に使う)。
Git Bash? ……いいやつだったよ(たまに使う)。
やはり慣れ親しんだ Linux コマンドたちで Windows を操作できるのがとてもありがたいです。
さらに、(今回のように)場合によっては Windows のexe
を叩けるのでできないことは少ないです。
I/O 遅かったりメモリ大食らいだったりはしますが、それでもとても便利です。
Author And Source
この問題について(WSLでWSLのGitとGit for Windowsをうまく使い分ける), 我々は、より多くの情報をここで見つけました https://qiita.com/okayurisotto/items/88791035ead9dd89280e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .