リポジトリのサイズを削減する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
Gitリポジトリのサイズは、パフォーマンスとストレージコストに大きく影響する可能性があります。圧縮、ハウスキーピング、その他の要因により、インスタンスごとに若干異なる場合があります。
リポジトリサイズの詳細については、以下を参照してください:
- リポジトリサイズ
- リポジトリサイズの計算方法
- サイズとストレージの制限
- GitLab UIを使用してリポジトリサイズを削減する方法
リポジトリの履歴からファイルをパージ
この方法は、Gitの履歴全体から大きなファイルを削除するために使用します。
パスワードやキーなどの機密データをリポジトリから削除するのには適していません。ファイルの内容を含むコミットに関する情報はデータベースにキャッシュされ、リポジトリから削除された後も表示されたままになります。機密データを削除するには、blobを削除で説明されている方法を使用してください。
前提条件:
git filter-repoをインストールする必要があります。- オプション。
git-sizerをインストールします。
ファイルのパージは破壊的な操作です。続行する前に、リポジトリのバックアップがあることを確認してください。
GitLabリポジトリからファイルをパージするには:
リポジトリのコピーを含むプロジェクトをエクスポートすると、ダウンロードされます。
- 大規模なプロジェクトの場合は、プロジェクトリレーションエクスポートAPIを使用できます。
バックアップを解凍して抽出します:
tar xzf project-backup.tar.gz--bareおよび--mirrorオプションを使用して、リポジトリをクローンします:git clone --bare --mirror /path/to/project.bundleproject.gitディレクトリに移動します:cd project.gitリモートURLを更新します:
git remote set-url origin https://gitlab.example.com/<namespace>/<project_name>.gitgit filter-repoまたはgit-sizerを使用してリポジトリを分析します:git filter-repo:git filter-repo --analyze head filter-repo/analysis/*-{all,deleted}-sizes.txtgit-sizer:git-sizer
次の
git filter-repoオプションのいずれかを使用して、リポジトリの履歴をパージします:特定のファイルをパージするには、
--pathと--invert-pathsを使用します:git filter-repo --path path/to/file.ext --invert-pathsたとえば10Mより大きいすべてのファイルをパージするには、
--strip-blobs-bigger-thanを使用します:git filter-repo --strip-blobs-bigger-than 10M
詳細については、
git filter-repoのドキュメントを参照してください。commit-mapをバックアップします:cp filter-repo/commit-map ./_filter_repo_commit_map_$(date +%s)ミラーフラグを解除します:
git config --unset remote.origin.mirror強制プッシュで変更をプッシュします:
git push origin --force 'refs/heads/*' git push origin --force 'refs/tags/*' git push origin --force 'refs/replace/*'参照の詳細については、Gitalyで使用されるGit参照を参照してください。
次の手順に進む前に、少なくとも30分待ちます。
リポジトリのクリーンアッププロセスを実行します。このプロセスでは、30分以上経過したオブジェクトのみがクリーンアップされます。詳細については、クリーンアップ後にスペースが解放されないを参照してください。