MsysgitbashはWindows7ではひどく遅いです


84

私はgitが大好きで、自宅ではOSXでほぼ常に使用しています。職場では、Windowsでsvnを使用していますが、ツールが完全に成熟したらすぐにgitに移行したいと考えています(TortoiseGitだけでなく、VisualSVNによって提供される非常に優れたVisual Studio統合に似たものもあります)。しかし、私は逸脱します...

私は最近インストールmsysgitを私のWindows 7のマシン上、およびbashのが含まれているバージョンを使用している場合、それは恐ろしく遅いです。そして、git操作だけではありません。clear約5かかります。AAAAH!

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


編集表示されますmsysgitはとうまく再生されていないことをUACとちょうどXP上で開発または無効にUACとVistaまたは7を実行しているから生じた小さな設計ミスかもしれません。を使用Run as administratorしてGitBashを起動すると、OS Xで表示される超高速になります(または、ネットワーク接続を使用してGit Bashを起動した後の7で-@ Gauthierの回答を参照してください)。

編集2AH HA! 私の答えを見てください。


5秒遅くはありません。Cygwinバージョンよりも遅くなりますが、速くなります。
ヤンラミン2010年

@theatrus:私は実際に今ストップウォッチを使用しました。平均は3.8秒でした。ですから、あなたは正しいのですが、それでも何かがひどく間違っています。
ケビンL.

もう1つのmsysgitの速度低下は、OpenSSHの古いバージョンがここに文書化されていることです。darrell.mozingo.net
2011/09/29 /

これについては、msysgitのwikiページを参照してください:github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow
Drew Noakes

回答:


54

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 /内のファイルの数を最小限に抑えます


これは今や受け入れられた答えであるはずです。チャームのように機能します!
krlmlr 2014

8
これは私にはうまくいきません。コマンドを実行した後、git bashはまだ1〜2秒遅れています。
ジャスキー2014

私にとって魅力のように働いた。大きなレポで私のgitステータスを13秒から0.7秒に下げました
noelob 2014

2
git config --global core.fscache true私には何もしませんでした。しかし、git config core.fscache trueトリックをしました。よると、このcore.fscacheがレポあたりの設定であるので、それはです。
David Merriman 2015年

2
@DavidMerriman「リポジトリごと」のコメントは、個々のリポジトリでこの設定を変更できることを示しているだけです。(これはすべての設定に当てはまるので、なぜそれが言及されているのかわかりません。)コメントは、リポジトリごとの設定としてfscache のみ機能することを意味するものではありません。グローバル設定は、リポジトリごとの設定によって上書きされない限り、マシン上のすべてのリポジトリに適用されます。
shoelzer

37

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

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


いいヒント(意図的ではなかったとしても:))。1.7.4を搭載したWindows2008R2で「gitsvnclone」を実行するのは、私にとってはひどく遅かった(SVNには5000以上のコミットがあり、半分を取得するのに数週間かかった)... XPの「ネイティブ」環境では、実際には非常に高速です。ありがとう!
bdrajer 2011

1
UACを無効にして管理者で実行しようとしましたが、Git Bashに入力したすべてのコマンドの実行には約5秒かかります(ls実質的に空のディレクトリでも)
Robin Winslow

4
この質問の答えは代わりに私のために働いた:stackoverflow.com/questions/4485059/…–
ロビンウィンスロー

リポジトリをシステム以外のパーティションに移動すると、チームのパフォーマンスが大幅に向上し、チェックアウト時にランダムな「ファイルを作成できない」問題が発生するのを防ぎました。
ローレンス

1
私はたくさんの解決策を試しました..これ(管理者として実行)はついに私のために働きました..今私のgitは再び

14

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

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

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


ありがとう!これは、WindowsXPでの私の問題であることが判明しました。stackoverflow.com/q/5851611/200688
AndyL 2011年

2
おそらくせることができ__git_ps1、あなたがSHOWDIRTYSTATEおよび/またはSHOWUNTRACKEDFILES設定を無効にした場合、参照、アクティブstackoverflow.com/a/4203968/321973
トビアスKienzler

これがWindows7で私にかかったすべてでした。このマシンは管理者権限なしでロックされているので特に幸運です!
エア・

12

ここにあるすべてのヒント(他の回答のヒントを含む)を新しいマシンで試しましたが、機能しませんでした。Gitはまだ地獄のように遅いです。

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

これがWindowsでGitが遅いという問題を抱えている他の人々に役立つことを願っています。私は、これを理解するのに何時間も費やしました。


4
gitインストールのパス全体をAvastの除外パスに追加した後、GitBashの起動も遅くなります。アンチウイルススイート、git bashは0.5秒未満で開始
zhxchen17 2015年

これが私にとっての答えでした!AVGFreeを使用しています。10分間無効にしたところ、突然veeerrryyyyの遅いbashが非常に速くなりました。
Mörre

Windows Defenderを使用している場合は、フォルダーまたはプロセスを除外することができます。support.microsoft.com/en-us/help/4028485/…を
Ehtesh Choudhury 2018

9

残念ながら、「管理者として実行」は機能しませんでしたが、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)


5

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

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

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

3
Outlookもウイルス対策も効果がないようですが、ネットワーク接続を無効にしてgitを起動すると、再接続した後でも非常に高速です(「Unix」と読みます)。興味深い...
ケビンL.

うん。そして、git bashは高速のままです(私がそれを閉じて別のインスタンスを開くまで)。
ケビンL.

2
ネットワーク接続も私のために働いた。それはネットワーク接続と何の関係があるのだろうか。そして不思議なことに、それは私のホームネットワークでは完全に正常に機能しますが、私のオフィスネットワークでは機能しません。
サラス2011

これにより、新しいiMacのWindows 7 Professional64ビットでの問題が修正されました。乾杯!
longda 2011年

提案された+1アンチウイルスが私の特定のシステムの原因でした。Windows 7x64アルティメット。UAC(他の場所で言及)は悲しいことに何の違いもありませんでした。みんなに感謝
MickyD 2011

3

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

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



1

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

この投稿では、これをオフにする方法について説明しています(投稿の下部、レジストリ設定を1つだけ参照してください)。

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


この問題(トラッカー)はクローズされました。これに関する新しい問題は次のとおり
msysgit

1

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

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


1

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

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

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

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

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

編集:以下のコメントは、私がこれを間違った方法で取得したことを指摘しました(リンクには正しい方法があります)。現在修正されています。レジストリをゴミ箱に移動した人には申し訳ありません:)


鉱山はデフォルトで2に設定されています。まだかなり遅い。
imanuelcostigan 2013

@imanuelc:皮肉なことに、私のものは(新しいコンピューターでは)今も遅く、遅いです。
jwg 2013

2
これは正しくありません。2から4に変更する必要があります。2は自動起動を意味します。4は無効を意味します。
richb 2014年

1

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

  • WindowsSearchサービスをオフにします。これはパフォーマンスに劇的な影響を及ぼしました。
  • Git拡張機能を閉じます。Git Extensionsの参照ウィンドウをバックグラウンドで開いていると、Cygwingitコマンドの実行時間が一見ランダムに最大約10倍に増加しました。

0

ここでの問題は、bashの完了が有効になっている場合に発生する可能性あります。これは、WindowsではLinuxよりもかなり低速です。

PS1変数を「$」のような単純なものに設定してみて、これによって処理が高速化されるかどうかを確認してください。含まれている場合は、最近のgit-versionsでbashの完了にいくつかの最適化が行われていることに注意してください。おそらく、アップグレードする必要があります。


1
私は絶対的な最先端の最新バージョンを実行しています(上記のVonCの回答に関する私のコメントを参照してください)。しかし、私はこれを試してみます。
ケビンL.

1.7.0.2は、このコンテキストでは必ずしも最先端ではありません。私が話している最適化は、upstream-gitで行われました。彼らがGitforWindowsの1.7.0.2リリースに参加していたかどうかはわかりません。
kusma 2010年

0

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

bashとwindowsで$ HOME環境変数を確認してください。ユーザーアカウントを指している場合は、ユーザーのWindowsプロファイル/権限を確認してください。それに応じて、ユーザーアカウントまたは$ HOMEのいずれかを変更します。


6
これらの不吉なプロファイル/パーミッションについて少し詳しく説明していただけますか?
Tobias Kienzler 2012年

0

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

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

パフォーマンスは今は大丈夫です。制限付きユーザーとしてのアクセス許可がないProgramFiles(x86)ディレクトリにインストールされていても、同じ問題が発生しているようには見えません。これは、ポータブルバージョンの方がファイルの書き込み/削除が少し保守的であるという事実(おそらくそうです)、または1.7から1.8へのアップグレードのいずれかによるものです。どちらが理由であるかを特定しようとはしませんが、今でははるかにうまく機能していると言えば十分です。


0

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

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

編集

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


0

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


0

次のgit構成を変更することで、パフォーマンスを大幅に向上させることもできます。

git config --global status.submoduleSummary false

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

次のページで説明されているようにGit自体のトレースをアクティブ化すると、問題の原因を見つけることができました。これは、インストールによって異なる可能性があります:https//github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-スロー


-4

おそらく、Gitリポジトリを分析するプロンプトの問題です。Gitリポジトリの外部のどこかで「クリア」を実行することでテストできます。また、git-completion.bashにパッチを適用するか、core.filemodeでトリックを実行することで、高速化できます。

Visual Studioの統合について:これはオープンソースです。他の人があなたのために無料で働くことを期待するのは不公平です。

私はまた、msysGitメーリングリストで質問しないで、むしろ面白いことを見つけることが、今、私は脱線します。


5
StackOverflowでの炎上は許容されるべきではありません。談話をより
礼儀正しく

1
うける。私のコメントは、具体的な技術情報を含む唯一のコメントでした。問題の解決を支援するという申し出はまだ開いています、あなたは知っていますか?そしてもちろん、私が監視しておらず、他の人から私に指摘されなければならなかったスタックオーバーフローに関して、ここで問題が提起されたことに私は非常に腹を立てています。この問題について直接聞いてみたいと思います。あなたのことはわかりませんが、元のプロジェクトに問題が通知されていない場合は不公平だと思います。
dscho 2010

2年後、私は同意します。厳しすぎた。すみません、Dscho。git開発者のメーリングリストは本当に役に立ちます。
phord 2012

2
@ Dscho、Gitのバグではなく、問題の原因となっている構成やプラットフォームの問題がないことを確認したいので、最初にここに投稿することがよくあることを理解する必要があります。
jwg 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.