web-dev-qa-db-ja.com

Msysgit bashはWindows 7でひどく遅い

私はgitが大好きで、自宅でOS Xを使用し続けています。職場では、Windowsでsvnを使用しますが、ツールが完全に成熟したらすぐにgitに移行します( TortoiseGit だけでなく、 VisualSVN )。しかし、私は脱線します...

最近、Windows 7マシンに msysgit をインストールしましたが、同梱されているバージョンのbashを使用すると、非常に遅くなります。そして、git操作だけではありません。 clearには約5秒かかります。ああああ!

誰かが同様の問題を経験しましたか?


Edit:itappearsmsysgitが [〜#〜] uac [〜#〜] そして、XPまたはUACを無効にしてVistaまたは7を実行し、Run as administratorの結果を使用してGit Bashを起動した結果私はOS Xで見ている電光石火の速さで(またはネットワーク接続なしでGit Bashを開始した後7で-@Gauthierの回答を参照してください)。

Edit 2AH HA! 私の答えをご覧ください。

82
Kevin L.

Vistaまたは7での速度低下の解決策は、Run as administratorを使用してGit Bashを実行しているようです(またはGit BashのUACを無効にする ショートカット ...またはUACを無効にする全体)。違いは昼と夜であり、7でのgitの使用は再び素晴らしいです。

これは 既知の問題 に関連しているように思われ、私が推測したように msysgitの開発環境としてのXP は部分的に責任があります。

37
Kevin L.

3つのコマンドを実行していくつかの構成オプションを設定することにより、WindowsでGitを大幅に高速化できます。

git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256

ノート:

  • core.preloadindex遅延を隠すためにファイルシステム操作を並行して行います(更新:git 2.1ではデフォルトで有効になっています)

  • core.fscache UACの問題を修正して、管理者としてGitを実行する必要がないようにします(更新:Git for Windows 2.8でデフォルトで有効になっています)

  • gc.autoは、.git /内のファイル数を最小化します

53
shoelzer

私にとって、問題はシェルプロンプトでの__git_ps1の使用でした-msysgitでのディスクアクセスが遅いためだと思います。

解決策は、/ etc/profileのPS1 = ...行から$(__ git_ps1)を削除することでした

このソリューションが適用されるかどうかのクイックテスト:gitシェルでexport PS1 = '$'と入力し、操作の速度を確認します。

13
chrisxxyy

ここですべてのヒント(他の回答からのものを含む)を新しいマシンで試してみましたが、うまくいきませんでした。Gitはまだ遅いです。

次に、ウイルススキャンソフトウェア(プリインストールされている)を確認しました。私はMcAfee Security Centerのリアルタイムスキャンを無効にしますで、presto:gitは非常に高速です! 「git svn rebase」に必要な時間は30秒から5秒に短縮されました(!)。

これがWindowsで遅いGitの問題をまだ抱えている他の人々に役立つことを願っています。

12
Tom De Leu

残念ながら「管理者として実行」は機能しませんでしたが、Kevin Lが見つけたように、ネットワークアダプターを切断し、git bashを起動してから、再接続が正常に機能しました。そこで、これをバッチスクリプトでラップし、[スタート]メニューに管理者として実行するようにフラグを付けたショートカットを配置しました。

netsh interface set interface "Local Area Connection" DISABLED
cd "%USERPROFILE%\Documents\Visual Studio 2010\Projects"
start cmd /c ""C:\Program Files\Git\bin\sh.exe" --login -i"
netsh interface set interface "Local Area Connection" ENABLED

ネットワークが一時的に切断されることを覚えている限り、大丈夫です。

(Win 7 Professional SP1、Gitバージョン1.7.8-preview20111206)

9
Daniel Hume

私の同僚は、Outlookが実行されているときはいつでもこの動作をしていました。 Outlookを強制終了して、もう一度テストしてください。

テストすることもできます:

  • ネットワークに接続せずに、
  • ウイルス対策を実行せずに、
  • 他のプログラムを実行せずに。
5
Gauthier

MacAffeeがあり、.gitディレクトリとすべてのサブディレクトリをリアルタイムスキャンから除外するように指示して、パフォーマンスの問題に対処しました。

3
Alex Brown

特定のユーザーアカウントで実行する場合、WaitForSingleObject()の呼び出しで個別のgit.exeインスタンスがブロックされるため、一度に効果的に実行できるgit.exe操作は1つだけです。ユーザーアカウントを変更すると、この問題を回避できました。

詳細はこちら: https://stackoverflow.com/a/13054022

3
Matthew Skelton

この問題 にあるように、UAC仮想化をオフにして実行すると(UACを完全に無効にする必要はありません)、大きな違いが生じます。

この投稿 無効にする方法を説明します(投稿の下部にある1つのレジストリ設定を参照)。

私が接続している1つの(大)SVNリポジトリで、上記の変更を行うだけで、「git svn rebase」に必要な時間が15秒から5秒に短縮され、ファクター3が改善されました。

1
Tom De Leu

Windows 7 UACをいじる代わりに、mysysgitをProgram Filesフォルダーの外にインストールすることもできます。たとえば、「C:\ Program Files(x86)\ Git」の代わりに、「C:\ git」にインストールしてみてください

「管理者として実行」とUACコントロールをいじってみましたが、あきらめて、新規インストールをやり直しました。以前は最大約15KiB/sでしたが、現在は60kiB/sを超えています。

1
Frank Yin

UACをオフにしてもパフォーマンスが改善されない場合は、luafvドライバーをオフにしてみてください。これは、このページのほとんどすべてと同様の質問をいくつか試した後、私にとってはうまくいきました。 Gitは使用できないほど低速からかなりまともになりました。

「regedit」を開き、レジストリキーを見つけます

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

Startの値を2から4に変更します。

luafvhere を無効にする方法の詳細を見つけました。個人的にluafvが何であるか、または何をするのかわからないことに注意してください。そのページには、オフにした場合に発生する可能性のある悪いことに関するさまざまな警告が表示されます。

編集:以下のコメントは、私はこれを間違った方法でラウンドしたことを指摘しました(リンクには正しい方法があります)。現在修正されています。登録を破棄した人たちに申し訳ありません:)

1
jwg

私はこれをしばらくの間トラブルシューティングしており、問題の原因を特定するのに苦労しました。最終的に、劇的な影響を与える2つのことがわかりました。

  • Windows Searchサービスをオフにします。これはパフォーマンスに劇的な影響を与えました。
  • Git拡張機能を閉じます。バックグラウンドでGit Extensionsの[参照]ウィンドウを開くと、Cygwinのgitコマンドの実行時間が、ランダムに見える最大で約10倍に増加しました。
1
bjos

ここでの問題mightが有効になっている場合、bash-completionになります。これは、WindowsよりもLinuxよりもかなり遅いです。

PS1変数を「$」のような単純なものに設定してみて、これが速度を上げるかどうかを確認してください。もしそうなら、最近のようなgit-versionsのbash-completionにいくつかの最適化があったことに注意してください。おそらくアップグレードする必要があります。

0
kusma

これは私のために働いた。 すべてのソリューションに適合するサイズになるとは思わないでください。

Bashおよびwindowsで$ HOME環境変数を確認します。ユーザーアカウントを指している場合は、ユーザーのWindowsプロファイル/アクセス許可を確認します。それに応じて、ユーザーアカウントまたは$ HOMEを変更します。

0
Deepak

かなり長い間、Windows 7 x64上でgit for Windows(msysgit)を制限付きユーザーアカウントとして実行するのと同じ問題に遭遇しました。私がここや他の場所で読んだことから、共通のテーマは管理者権限やUACの欠如にあるようです。私のシステムではUACがオフになっているので、プログラムファイルディレクトリに何かを書き込んだり削除しようとしているという説明が最も理にかなっています。

いずれにせよ、私はgit1.8のポータブルバージョンをzipinstallerでインストールすることで問題を解決しました。 zipinstallerが機能するためには、.7z配布ファイルを解凍し、Zipとして再パックする必要があることに注意してください。また、そのディレクトリをシステムパスに手動で追加する必要がありました。

現在、パフォーマンスは良好です。 Program Files(x86)ディレクトリにインストールされますが、これは制限付きユーザーとしてのアクセス許可がありませんが、同じ問題の影響を受けないようです。これはおそらく、ポータブルバージョンのほうがファイルの書き込み/削除の点でもう少し保守的であるという事実(おそらくそうである)、または1.7から1.8へのアップグレードのいずれかに起因します。私はどちらが理由であるかを特定しようとはしませんが、それがうまくいくと言うだけで十分です多く今より良い。

0
Binary Phile

指摘されているように、最適なソリューションは管理者として実行することです。ただし、少なくともgit statusを高速化する別のオプションはtrustctime = falseです。その前にgit statusは約30秒かかり、その後は出力に表示される量と同じです-X秒かかりました...

0
TS'

Msysgitのアンインストール、Windowsの再起動、msysgitの最新バージョンのインストールを試してください。それは私のためにトリックをしているようでした。私はここでこの提案を見つけました:

https://stackoverflow.com/a/4506192/1413941

[〜#〜] edit [〜#〜]

PS遅いGitの問題が発生する前にUACを無効にしていたので、UACを無効にする必要があるかどうか、Gitを高速に実行できないかどうかはわかりません。

0
Herr Grumps

また、次のgit構成を変更することにより、重要なパフォーマンスの向上を得ることができます。

git config --global status.submoduleSummary false

単純なgit statusコマンドをWindow 7 x64で実行すると、コンピューターの実行に30秒以上かかりました。このオプションが定義された後、コマンドは即座に実行されます。

次のページで説明するようにGitの独自のトレースをアクティブにすると、問題の原因を見つけるのに役立ちました。これは、インストール環境によって異なる場合があります。 https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git- is-so-slow

0
Olivier