Bitbucket gitリポジトリのサイズ制限は2GBですが、バイナリファイル(拡張子がとのファイル)が多いため、すでにその制限に危険なほど近づいているリポジトリが1つあります(これをbigsizeリポジトリと呼びます)。制限に非常に近いので、バイナリファイルを含むコミット操作でサイズが2GBを超えるため、コミットが失敗して続行できなくなるのではないかと心配しています。dll
msm
さて、bigsizeリポジトリのサイズを小さくするための最善の方法は?
LFS機能の使用を考えていますが、LFSスペースに1GBの制限があり、このリポジトリの使用には不十分であると考えています(リポジトリサイズの大部分はバイナリファイルからのものであるため) LFSに保存したい)。
だから私はリポジトリと履歴からすべてのバイナリファイルを削除することを考えています(ローカルドライブにあるので、ソース管理からそれらを失ってもかまいません)、現在のサイズを考慮してこれを行う最善の方法私のビッグサイズのレポの?
私が持っている攻撃計画:
*.dll
git rm -rf -cached
するコミットを送信してコマンドを使用します)。これが必要なのは、「デフォルトでは、BFGは、マスター(または「HEAD」)ブランチの最新のコミットの内容を変更しませんが、それ以前のすべてのコミットはクリーンアップします。」このアプローチは、2GBに非常に近いレポで機能しますか?手順1で、を使用git rm
すると、履歴が追加され、リポジトリのサイズが2 GBを超えてしまうため、失敗するのではないかと心配しています。
重要な詳細:
BFGリポジトリクリーナーを使用して問題を解決する方法は次のとおりです。私と同じ状況に直面する可能性のある将来の人々に役立つように、私はそれを書き留めます。
始める前に、すべてのブランチが「クリア」であることを確認してください。つまり、必要なすべての変更がそれぞれのブランチにプッシュされます。巨大なリポジトリに大きなリポジトリという名前を付け、にあると仮定しD:\MyCompany\big
ます。
また、実際に本番レポで作業する前に、おもちゃのレポでこれを試してみることもできます。
git clone --mirror [email protected]:YourUserName/big.git
)、この新しいフォルダが元の外にあることを確認してください大きなレポフォルダ。これが完全に別のものであることを確認する必要がD:\MyCompany\big
あります(したがって、恐れることなく実験できます)。このフォルダがD:\big_work
であると仮定するとD:\big_work\big.git
、クローンを作成した後、フォルダを見つけることができます。big.git
フォルダを別の場所にバックアップし、に入れましょうD:\backup
。バイナリファイルが実際にbitbucket(またはリポジトリプロバイダー)によって提供されるLFS制限を超えていることを確認します。ここでの私の場合、バイナリファイルのサイズが1GB未満であることを確認する必要があります。これを行うには、big.git
BFGを介してのgitをLFSに変換します。コマンドラインで:
3.1。 cd D:\big_work
3.2。java -jar <path to>bfg-x.x.x.jar --convert-to-git-lfs "*.{dll, msm}" --no-blob-protection big.git
(D:\big_work
フォルダ内にいる間にこれを行うようにしてください)
D:\big_work\big.git\lfs
フォルダのサイズを確認してください。1GBを超えていますか?いいえの場合は、ここのlfs
手順4から続行して、バイナリファイルの変換に進むことができます。残りを読む必要はありません。
lfs
フォルダが1GBを超える場合は、リポジトリからバイナリファイルを削除し、履歴を書き換える必要があります。big.git
からフォルダを削除し、(手順2で行ったバックアップ)D:big_work
から復元D:\backup
します。ここに最も重要なステップがあります:実際の削除。多くのガイドが、この手順を実行する前に、コミットがクリーンであること(つまり、現在のリポジトリの状態にバイナリファイルがないこと)を最初に確認することが重要である理由について説明しています。しかし、私はこのような不必要で気が散るようなアドバイスを見つけます。必要なものをすでによく知っているので、つまり、現在と過去のすべてのバイナリファイルをすべてのブランチから削除し、マージまたはマージ解除すると、リポジトリはバイナリファイルで汚染されていないように見えるはずです。いつでも-この警告は無視する必要があります。私たちno-blob-protection
はこの目的のために核兵器を持ち込みます。
7.1。 cd D:\big_work
7.2。 java -jar <path to>bfg-x.x.x.jar --delete-files "*.{dll,msm}" --no-blob-protection big.git
cd D:\big_work\big.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
D:\MyCompany\big
、あなたが最初sourcetreeブックマークを削除する必要があり、名前が変更されますので、あなたは、あなたのsourcetreeのブックマークがこのフォルダに指摘しているD:\MyCompany\big
にD:\MyCompany\big_old
。big_old
バイナリファイルをリポジトリ内に配置したくないが、ハードディスク上に配置したい場合でも、フォルダはまだ削除しないでくださいbig_old
。フォルダは自然なバックアップを提供します。big_old
本当に価値がないことを確認した後、将来のある時点でフォルダを削除できます。D:\MyCompany\big
な変更を避けるために、フォルダにクローンを戻しましょう。D:\MyCompany\big
フォルダーに再ポイントします。big_old
をbig
フォルダに段階的に転送します。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加