問題タブ [git-gc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - リポジトリサイズに応じたgitgcのスレッド数
大きなリポジトリにはGitでシングルスレッド圧縮を使用でき、小さなリポジトリには通常の並列圧縮を使用できますか?momoryに簡単に収まらない場合は「pack.threads=1」、それ以外の場合は「pack.threads=4」のようになります。
私がどこかで心に留めているように、マルチスレッドの「git gc」は、シングルスレッドよりも多くのメモリとスラッシュ(または単に失敗)を必要とします。
小さなリポジトリで高速に動作し、大きなリポジトリで失敗しないようにしたいと思います。
git - git gc --aggressiveを停止するのは悪いことですか?
git gc --aggressive
非常に大きなリポジトリ(apx 100 gb)でを実行しています。2泊前から実行されており、数時間の時点で、「オブジェクトの圧縮:99%(76496/76777)」に固執しています。
私がCtrl-Cプロセスの場合、結果はどうなりますか?私のレポは使用できなくなりますか?私の直感はノーと言っていますが、私はいくつかの意見が欲しいです。ありがとう!
git - Git gc が過剰なメモリを使用しているため、完了できません
最終的な更新と修正: ここでの解決策は、 Graham Borland が提案したようにCygwin Git ではなく Windows Git を使用することと、Git 構成設定pack.threads = 1
とgc.aggressiveWindow = 150
.
私は大規模なローカル Git リポジトリを持っています。これgit svn clone
は、約 40,000 のコミットを持つ SVN リポジトリの 1 つです。私はgit gc
このリポジトリを実行しようとしていますが、どこにも行きません:
4GB RAMを搭載した64ビットデュアルコアWin7マシンでCygwin内でGit 1.7.5.1を実行しています。現在、.git
ディレクトリは 6.1GB を少し超えています。
を実行git gc --aggressive
して、より完全なシステムで修正できるかどうかを確認しましたが、うまくいきませんでした: 上記と同様のメッセージが表示されますmalloc
。 )。
また、Google が示唆するように、ファイルの[pack]
一部にさまざまな調整を加えてみました。.gitconfig
最も完全なものは、別の StackOverflow questionからのものです。現在、次の.gitconfig
関連行がありますが、これらを設定しても違いはないようです。
リポジトリにアクセスgit
する方法について何か提案はありますか?gc
編集: Mark Longair がさらにファイルの変更を提案しました。.gitconfig
私が作ったもの、以下の新しい行。しかし、変更は何の違いもありませんでした。
編集 2 : Michael Krelinは、スワップ/ページ ファイルのサイズを大きくすることを 提案しました (WinXP の手順はこちら、Win7 の場合も同様です)。私はそれを試しましたが、違いはありませんでした。実際、使用可能な最大サイズを増やしただけで、Windows が使用していたページ ファイルのサイズを決して増やそうとしなかったようです。
これが Cygwin 内のメモリ制限によるものか、Cygwin に課せられたものかを調べています。「課された」を確認するために、Cygwinを管理者権限で実行しようとしています。「内」(可能性が高い) を確認するために、Cygwin の最大メモリ設定で遊んでいます。
編集 3 : Cygwin の使用を好むかもしれませんが、Windows Git クライアントがメモリの問題をうまく処理していることがわかりました。私のリポジトリが整頓されている必要があるとき、私は時々それに戻ってくるようです。
git - git gc/git repack 出力の「Total」行の数字は何を意味していますか?
Git リポジトリを実行git gc
またはgit repack
上書きすると、完了すると「合計」行が出力されます。これらの数字は何を意味するのでしょうか?
かなり小さなリポジトリからのいくつかの例:
そして、はるかに大きなリポジトリからの 1 つ:
最初の「合計」数は、リポジトリ内の Git オブジェクト (つまり、コミット、ツリー、およびファイル) の数であると推測できます。他のすべては実際にはどういう意味ですか?
私はすでにgit-gc(1)
およびgit-repack(1)
man ページを見て、それらの「関連項目」も熟読しましたが、Google で検索しようとしても、無関係な結果しか得られませんでした。
git - GIT GC がサーバーのメモリを消費する
私は、dreamhost がホストする 2GB メモリの仮想サーバーで Git を使用しています。私はgit gc
毎朝 4 時に実行し、過去 1 週間一貫して、dreamhost プロセスの再起動は、2 GB を超えるメモリを消費したため、メモリを消費しているプロセスを停止するためにサーバーを再起動したことを示す電子メールを送信します。
リポジトリのサイズは 10GB です。これを投稿する前に広範囲に調べましたが、Git が作成したログ ファイルで、Git が「触れていた」サーバーの強制再起動の原因となったファイルを確認できますか?
git - デフォルト設定 (*:refs/heads/*) の Git Extensions Push はすべてのブランチを台無しにします
問題
これは GitExtensions のバグのように聞こえますが、特定の情報が見つかりませんでした。複数のブランチを持つ裸のリポジトリがある場合に問題が発生すると思います。次にプッシュすると、無視を選択すると混乱したブランチが見つかるという警告が表示されます。または、押し方によっては、警告すら表示されず、どこでも破滅です。
と という 2 つのローカル ブランチがあるとmaster
しanother
ます。そして、origin
プッシュ用のデフォルトセット。origin/master
通常のプッシュの後、 andも見つかりますorigin/another
。それだけです。
しかし、運命のプッシュの後、重複origin/master
とorigin/another
プラスが見つかりorigin/refs/heads/master
、それも重複しています。余分なブランチごとに。また、すべてのブランチなどをプッシュしているわけでも、複数のブランチ機能を使用しているわけでもありません。
実際、これが起こった後は、単純push
にエラーなしではいられません! (はい、もちろんWindowsを使用しています)
でブランチをリストすると、問題が明らかになりgit branch -r
ます。
それを修正するには
次のようにする必要があります。
- のフォルダを手動で削除します。を使用するだけで機能する場合もあれば、より堅牢で直接フォルダーに移動する必要がある場合もあります。これは難しいステップであり、主な問題はそれらが機能しないときに発生します...
refs/heads
origin
git push origin :<branchName>
git fetch -p
、元の変更をローカルにもたらすため。- 最終的にすべてのクライアントを調べて使用し
git remote update
ます。必要に応じて、同じブランチを 1 つずつ、または任意の方法で削除します。たとえば、堅牢かつ直接フォルダーに再度移動します。この手順には、まだ診断できない別の問題がある場合があります。
周波数
私たちにとって、これは明言された事実です。正確な原因を確認するために多くの実験を行っていませんが、このレポを使用する 5 台のマシンのいずれかで発生し、bare
.
そして、それが起こるたびに、私は走って、それを修正する方法を見つけなければなりません. 今回は、ウェブ上で十分に具体的なものを見つけることができなかったので、それを文書化することにしました.
どうして
ここでの問題は、なぜこれが起こるのか、どうすればそれを防ぐことができるのかということです。GitExtensionsの障害のみですか? 私たちの側では、GitExtensions のこの特定のシナリオでのみ発生します。
git - git リモート リポジトリで変数を設定する - git gc が自動的に実行されない
リモートリポジトリで gc コマンドを自動的に実行することを git が拒否しているようです。約 1 か月で、そのリポジトリは .pack ファイルのために約 6GB に拡大します。これは変数 gc.auto に問題があると思います - リモートリポジトリでこの変数を設定するにはどうすればよいですか、またはそのリポジトリで手動で git-gc コマンドを実行するにはどうすればよいですか?
git - Git:自動クリーンアップ?
git gc
以前は、時々呼び出す必要がありました。私は今、最新の Git バージョンがクリーンアップを自動的に実行する必要があることを読みました。これは正しいです?
git - これらの Git GC の問題を修正するにはどうすればよいですか?
私のgitリポジトリ(私は思う?)がガベージコレクションが必要であると判断するという問題が繰り返し発生します。このプロセスには 30 分以上かかり、プル/プッシュ操作のたびにトリガーされます。
Git GC を手動で実行するには 30 分かかりますが、問題は解決していないようです。私が見つけた唯一の解決策は、レポを削除して新しいクローンを作成することですが、これはさまざまな理由で最適ではありません。
git GC 操作で git にいくつかのメモリ制限を設定して、git GC 操作でクラッシュしないようにしたため、私の git GC 操作が遅くなることがあります。
どんな助けでも大歓迎です。これは大規模なレポであり、レポには大量のバイナリ データと、非常に大きな (>500k) テキスト ファイルが多数含まれています。
1. Git がガベージ コレクションを決定する量を制限するにはどうすればよいですか。2. GC 操作を高速化するにはどうすればよいですか? 3. 関連するより大きな問題を解決または最小限に抑えるにはどうすればよいですか (つまり、そもそもなぜガベージ コレクションが必要なのか)。
git - git merge --squash に続いて git gc を使用して未使用のブロブを一掃しますか?
何年も前にチェックインされた多数の大きなブロブが原因で、リポジトリが非常に大きくなりました。それらはその後の改訂で削除され、もはや必要ないので、それらへの参照を今すぐ削除できるはずです。
使用に関するいくつかの参照を見てきましgit filter-branch
たが、このコマンドを使用すると危険で厄介なように見えるので、これを試しました:
これは、履歴の任意の時点で作成され、その後削除されたものはすべて永久に削除されることを意味するのではないでしょうか?
何らかの理由で、動作していないようです - サイズはほぼ同じです。
助言がありますか?