目次
1.浅いクローンとスパースチェックアウトを使用します
浅いクローン
スパースチェックアウト
2. GITの組み込み最適化を有効にします
グラフをコミットします
インデックスバージョン4(サポートされている場合)
マルチパックの到達可能性(git2.35)
インデックスメモリ設定を変更する(Advanced)
3。GITの代替またはラッパーを使用します
スカラー(Microsoftによる)
gvfs(git仮想ファイルシステム)
4.ワークフローと構造を最適化します
Split Monorepos(可能であれば)
良い枝衛生を実施します
.gitignoreを使用して、大きなファイルを避けます
5。環境を調整します
ボーナス:監視と診断
ホームページ 開発ツール Git 非常に大きなgitリポジトリでパフォーマンスを最適化します

非常に大きなgitリポジトリでパフォーマンスを最適化します

Aug 17, 2025 am 08:36 AM
git パフォーマンス

大規模なGITリポジトリを最適化するには、浅いクローンとスパースチェックアウトを使用してデータの負荷を減らすことから始めます。1。最小履歴にはGitクローンを使用し、gitスパースチェックアウトに必要なディレクトリのみを取得します。 2. core.commitgraph、core.indexversion 4、core.multipackindexなどの組み込みの最適化を有効にし、サポートされている場合はインデックスメモリ設定を調整します。 3.極端な規模の場合は、最適化を自動化し、仮想化モードを使用しているScalarなどのツール、またはオンデマンドファイルアクセスにGVFを採用します。 4.可能な場合は、モノレポスを分割し、通常の剪定でブランチの衛生を実施し、.gitignoreおよびgit-lfsを介して大きなファイルを避けてワークフローを改善します。 5.高速SSD、十分なRAM、効率的なファイルシステムで環境を調整し、.GITでのアンチウイルススキャンを無効にします。さらに、git_trace_performance = 1またはgit_trace2_event = 1を使用してパフォーマンスを監視して、ボトルネックを識別します。最適化には、GITの設計に合わせて、構成、ツール、およびプラクティスの層状改善が必要です。

非常に大きなgitリポジトリでパフォーマンスを最適化します

非常に大きなGITリポジトリ、特に何千ものコミット、数百の支店、および大規模なファイルカウントを備えたモノレポスを使用すると、操作が遅くなり、メモリ使用量が高い、イライラする開発者エクスペリエンスが発生します。 git statusgit loggit checkoutなどのコマンドには数秒または数分かかる場合があります。このような環境でパフォーマンスを最適化する方法は次のとおりです。

非常に大きなgitリポジトリでパフォーマンスを最適化します

1.浅いクローンとスパースチェックアウトを使用します

完全な履歴またはすべてのファイルが必要ない場合は、Gitロードを減らします。

浅いクローン

最新の履歴のみをクローンします:

非常に大きなgitリポジトリでパフォーマンスを最適化します
 git clone  - 濃度1 <レポリ>

これは、最新のコミットのみを獲得し、クローン時間をスピードアップし、ディスク/メモリの使用量を削減します。 CI/CDまたは1回限りのタスクに役立ちます。

継続的な作業のために、徐々に深くすることができます。

非常に大きなgitリポジトリでパフォーマンスを最適化します
 Git Fetch  -  Depth = 10

スパースチェックアウト

必要なディレクトリのみをチェックしてください。

 git clone-no-checkout <repo-url>
CDレポ
gitスパースチェックアウトinit  - コーン
gitスパースチェックアウトセットパス/to/sub-directory
gitチェックアウト

--coneモードはより速く、単純なディレクトリパターンに適しています。

これは、モノレポで作業するときに理想的ですが、1つのサービスまたはコンポーネントのみに触れるだけです。


2. GITの組み込み最適化を有効にします

最新のGITバージョンには、有効にする必要があるパフォーマンス機能が含まれます。

グラフをコミットします

git logとリビジョンウォークをスピードアップします:

 git config core.commitgraph true
git commit-graph write-到達可能

インデックスバージョン4(サポートされている場合)

大規模なインデックスの処理を改善します:

 git config core.indexversion 4

注:すべてのGITバージョンがこれをサポートするわけではなく、ディスクの使用量を増やす可能性があります。

マルチパックの到達可能性(git2.35)

パックファイル全体の到達可能性トラバーサルを最適化します。

 git config core.multipackindex true

走る:

 gitマルチパックインデックス書き込み

インデックスメモリ設定を変更する(Advanced)

100Kファイルを備えたリポジトリの場合、インデックスメモリ制限の増加(Gitビルドでサポートされている場合)を検討するか、 git-index-pack --threadsなどのツールを使用します。


3。GITの代替またはラッパーを使用します

極端な規模については、大規模なレポで設計されたツールを検討してください。

スカラー(Microsoftによる)

大規模なレポを最適化するために構築されています(MicrosoftでWindows and Officeのために内部で使用):

スカラークローン<repo-url>

自動的にスカラー:

  • 浅いクローンを有効にします( --virtualizedモード)
  • バックグラウンドメンテナンスを使用します
  • パックファイルとガベージコレクションを最適化します
  • Azureパイプラインと統合します

特に100GBを超えるレポで効果的です。

gvfs(git仮想ファイルシステム)

現在、Scalarには主に置き換えられていますが、それでも一部のエンタープライズ環境で使用されています。ファイルシステムを仮想化するため、必要なファイルのみがオンデマンドでダウンロードされます。


4.ワークフローと構造を最適化します

最良の修正が技術的ではない場合があります。組織の組織です。

Split Monorepos(可能であれば)

所有権と展開が独立している場合は、小さなレポに分割することを検討してください。使用:

  • gitサブモジュール(シンプルだが不器用)
  • gitサブツリー(より統合)
  • またはプライベートレジストリ付きのパッケージマネージャー(NPM、PIPなど)

良い枝衛生を実施します

リモートブランチが多すぎると、 git fetchgit branch -r遅くなります。古い枝を定期的に掃除する:

 git fetch -prune

短命の機能ブランチを奨励します。

.gitignoreを使用して、大きなファイルを避けます

大きなバイナリ(ログ、ビルド、データセット)が追跡されていないことを確認してください。 .gitignore積極的に使用し、必要に応じてgit-lfsを検討してください。


5。環境を調整します

小さなシステムレベルの変更が役立ちます。

  • 高速SSDS :ディスクI/Oは多くの場合ボトルネックです。
  • より多くのRAM :大きな木のインデックス作成と拡散に役立ちます。
  • より高速なファイルシステムを使用してください:NTFS、APFS、またはExt4は、ネットワークまたは仮想ドライブよりも優れたパフォーマンスを発揮します。
  • Antivirus Scanning .gitを避けてください:リアルタイムスキャンはGitパフォーマンスを不自由にすることができます。

また、gitを更新し続けます。新しいバージョン(2.30)には、パフォーマンスの大幅な改善が含まれています。


ボーナス:監視と診断

Gitのトレースツールを使用して、ボトルネックを見つけます。

 git_trace_performance = 1 gitステータス

これは、各操作にかかる時間を示しています。

または:

 git_trace2_event = 1 git log> trace.jsonl

次に、構造化されたログを分析します。


大規模なGit Reposの最適化は、1つの魔法の修正に関するものではありません。構成、ツール、ワークフローの改善の層です。浅いクローンとスパースのチェックアウトから始め、コミットグラフとインデックスの最適化を有効にし、大規模なレポのスカラーを検討し、レポ衛生をクリーンアップします。

基本的に、Gitのデザインではなく、Gitのデザイン動作します。

以上が非常に大きなgitリポジトリでパフォーマンスを最適化しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHP環境で環境変数を設定する方法PHPランニング環境変数の追加の説明 PHP環境で環境変数を設定する方法PHPランニング環境変数の追加の説明 Jul 25, 2025 pm 08:33 PM

PHPに環境変数を設定する3つの主な方法があります。1。Php.iniを介したグローバル構成。 2。Webサーバー(apacheのsetenvやnginxのfastcgi_paramなど)を通過しました。 3。Phpスクリプトでcutenv()関数を使用します。その中でも、PHP.iniはグローバルおよび頻繁に変更された構成に適しており、Webサーバーの構成は分離する必要があるシナリオに適しており、Putenv()は一時的な変数に適しています。永続性ポリシーには、構成ファイル(PHP.INIまたはWebサーバーの構成など)、.ENVファイルにはDoTENVライブラリがロードされ、CI/CDプロセスの変数の動的注入が含まれます。セキュリティ管理に敏感な情報は、ハードコーディングを避ける必要があり、使用することをお勧めします。

NGINXとPHPサービスの組み合わせを構成するためにMACOSを使用してPHP Nginx環境を構築する方法 NGINXとPHPサービスの組み合わせを構成するためにMACOSを使用してPHP Nginx環境を構築する方法 Jul 25, 2025 pm 08:24 PM

MAC環境の構築におけるHomebrewの中心的な役割は、ソフトウェアのインストールと管理を簡素化することです。 1. Homebrewは、依存関係を自動的に処理し、複雑な編集プロセスとインストールプロセスを簡単なコマンドにカプセル化します。 2。ソフトウェアのインストールの場所と構成の標準化を確保するために、統一されたソフトウェアパッケージエコシステムを提供します。 3.サービス管理機能を統合し、BrewServicesを介してサービスを簡単に開始および停止できます。 4.便利なソフトウェアのアップグレードとメンテナンス、およびシステムのセキュリティと機能を改善します。

Solana Summer:開発者イベント、ミームコイン、次の波 Solana Summer:開発者イベント、ミームコイン、次の波 Jul 25, 2025 am 07:54 AM

Solanaの強い回復:開発者とMeme Coin Carnival Driveの急増は続くことができますか? Trends Solanaがカムバックしているトレンドの詳細な解釈!沈黙の期間の後、パブリックチェーンが再び若返り、コインの価格は上昇し続け、開発コミュニティはますます活発になりつつあります。しかし、このリバウンドの真の原動力はどこにありますか?それは鍋の中のただのフラッシュですか? Solanaの現在のコアトレンドを掘り下げましょう。開発者のエコロジー、ミームコインの狂信、および全体的な生態学的拡大を掘り下げましょう。コイン価格の急増の背後:実際の開発活動が最近回復しました、Sol Priceは6月以来初めて200ドル以上に戻り、市場での激しい議論を引き起こしました。これは根拠がありません - Santimentデータによると、その開発者は過去2か月で新しい最高に達しました。これ

PHPコンテナを自動構造をサポートする方法は? PHP環境の継続的に統合されたCI構成方法 PHPコンテナを自動構造をサポートする方法は? PHP環境の継続的に統合されたCI構成方法 Jul 25, 2025 pm 08:54 PM

PHPコンテナが自動構造をサポートできるようにするために、コアは連続統合(CI)プロセスの構成にあります。 1. DockerFileを使用して、基本的な画像、拡張インストール、依存関係管理、許可設定など、PHP環境を定義します。 2. GitlabciなどのCI/CDツールを構成し、.gitlab-ci.ymlファイルを介してビルド、テスト、展開段階を定義して、自動構造、テスト、展開を実現します。 3. phpunitなどのテストフレームワークを統合して、コードの変更後にテストが自動的に実行されることを確認します。 4. Kubernetesなどの自動展開戦略を使用して、deployment.yamlファイルを介して展開構成を定義します。 5. DockerFileを最適化し、マルチステージ構造を採用します

Kubernetesを使用してPHP環境を一貫した生産とローカルコンテナ構成標準に保つ方法 Kubernetesを使用してPHP環境を一貫した生産とローカルコンテナ構成標準に保つ方法 Jul 25, 2025 pm 06:21 PM

PHP環境と生産の間の矛盾の問題を解決するために、コアはKubernetesのコンテナ化とオーケストレーション機能を使用して環境の一貫性を実現することです。特定の手順は次のとおりです。1。すべてのPHPバージョン、拡張機能、依存関係、Webサーバー構成を含む統一されたDockerイメージを構築して、開発と生産で同じ画像が使用されるようにします。 2. KubernetesのconfigMapとSecretを使用して、非感受性および敏感な構成を管理し、ボリュームマウントまたは環境可変噴射を介したさまざまな環境構成の柔軟な切り替えを実現します。 3.統一されたKubernetes展開定義ファイル(展開やサービスなど)を介してアプリケーションの動作の一貫性を確保し、バージョンコントロールに含める。 4。

エセナ財務戦略:馬鹿げた第三帝国の台頭 エセナ財務戦略:馬鹿げた第三帝国の台頭 Jul 30, 2025 pm 08:12 PM

二重通貨システムでのバトルロワイヤルの実際の使用はまだ発生していません。結論2023年8月、Makerdao Ecological Lending Protocol Sparkは、$ DAI8%の年間収益率を与えました。その後、Sun Chiはバッチに入り、合計230,000ドルのステスを投資し、Sparkの堆積物の15%以上を占め、Makerdaoに金利を5%に引き下げるように緊急提案をすることを余儀なくされました。 Makerdaoの当初の意図は、$ Daiの使用率を「助成」することであり、ほとんどJustin Sunのソロの利回りになりました。 2025年7月、エセ

5,000元を使用して、通貨サークルで500,000元を獲得する方法は? 5,000元を使用して、通貨サークルで500,000元を獲得する方法は? Aug 07, 2025 pm 08:42 PM

デジタル通貨の分野では、さまざまな変数と機会が5,000から500,000のプリンシパルを増やすことで、資産増加の100倍を達成する必要があることを意味します。これは単純な数学ゲームではなく、認知、戦略、メンタリティ、実行を含む包括的なテストです。参加者は、運だけに頼らず、鋭い市場洞察と並外れたリスク管理能力を持つことも必要です。

以前のgitコミットメッセージを修正する方法 以前のgitコミットメッセージを修正する方法 Aug 01, 2025 am 03:34 AM

toamendthemostrecentcommitmessage、usegitcommit - amend-m "yournewcommitmessage" ifthecommithasは、notbeenpushed; thirewritestheLocalcommithistorywithenewmessage.2.toeditthemessageyneurdefaultedeed、rungitcommit------denendwithouttheのut-compithutthe

See all articles