8

大きなファイルがあり、新しい Git LFS システムを使用しようとしていました。

この質問を投稿しました - Git lfs - 「これは GitHub のファイル サイズ制限の 100.00 MB を超えています」

Edward Thomson は私の問題を正しく特定しました - LFS をさかのぼって使用することはできません。彼は、BFG LFS サポートを使用することを提案しました

これはある程度機能しました。ファイルの大部分が変更されました。ただし、変更されていない保護されたコミットがありました。

これらの保護されたコミットのうち、一部は 100.00MB を超えていたため、github からの remote:error が発生しました。

Protected commits
-----------------

These are your protected commits, and so their contents will NOT be altered:

 * commit c7cd871b (protected by 'HEAD') - contains 165 dirty files :
    - Directions_api/Applications/LTDS/Cycling/Leisure/l__cyc.csv (147.3 KB)
    - Directions_api/Applications/LTDS/Cycling/Work/w_cyc.csv (434.0 KB)
    - ...

WARNING: The dirty content above may be removed from other commits, but as
the *protected* commits still use it, it will STILL exist in your repository.

If you *really* want this content gone, make a manual commit that removes it,
and then run the BFG on a fresh copy of your repo.

まず第一に、なぜこれらのコミットが保護され、BFG が正常に変更されたものと異なるのかを誰か説明できますか?

第二に、これらの保護を解除し、BFG がそれらを編集できるようにするにはどうすればよいですか。これにより、LFS を正しく使用して、最終的に GitHub に正常にプッシュできます。

4

1 に答える 1

16

BFG はもともと、Git の歴史の奥深くに埋もれている不要なデータ (大きなファイル、パスワード)を破壊するためのツールとして作成されました。BFG が実行された後はデータが失われ、直接利用できなくなったこのデータを処理するようにプログラムを調整する必要があることがよくあります (つまり、環境変数からパスワードを読み取るか、大きな依存関係をダウンロードするようにプログラムを変更する必要があります)。これらの変更を処理するためにプログラムを適応させることは、簡単に自動化できるステップではありません。その変更に対処するには、人間がコードを更新する必要があります。

デフォルトでは、プロジェクトは「再編成」されていると想定することにしました。過去に間違いを犯していましたが、ユーザーが BFG を発見するまでに、ユーザーはすでに間違いを認識しており、少なくとも最新のものはクリーンアップしていたはずです。コミットします (つまり、問題に取り組むための最初のステップとして、不要なデータを削除するコミットを既に行っている可能性があります)。したがって、BFG が最新のコミットを変更しない方が安全でした。別の方法は、BFG がプロジェクトの最新バージョンを含む履歴のすべてをやみくもに踏みつけ、パスワードの読み取りを処理する準備ができていないソフトウェアを実際に壊すことでした。環境変数などから

この動作は、--no-blob-protectionフラグを追加することで無効にできます。たとえば、次のようになります。

$ java -jar ~/bfg-1.12.7.jar --convert-to-git-lfs '*.{exe,dll}' --no-blob-protection

--no-blob-protection実行中の唯一の操作である場合に暗黙的にフラグを使用するように BFG を更新する予定です。--convert-to-git-lfsこれはもはや真に破壊的な操作ではないためです。

完全な開示: 私は BFG Repo-Cleaner の作成者です。

于 2015-11-13T08:18:33.700 に答える