58

github のファイル サイズ制限である 100.00 MB より大きい csv ファイルがいくつかあります。Git Large File Storage 拡張機能を使用しようとしています。

https://git-lfs.github.com/

LFS から -"Large file versioning- Version large files—even those as large as a couple GB in size—with Git."

問題のフォルダーに以下を適用しました。

git lfs track "*.csv"

ただし、プッシュすると:

remote: error: File Time-Delay-ftn/Raw-count-data-minor-roads1.csv is 445.93 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: File Time-Delay-ftn/Raw-count-data-major-roads.csv is 295.42 MB; this exceeds GitHub's file size limit of 100.00 MB

問題のフォルダを見ると:

-rw-r-----   1 user  staff    42B 23 Oct 12:34 .gitattributes
-rw-r--r--   1 user  staff   1.3K 19 Oct 14:32 DfT_raw_major_manipulation.py
-rw-r--r--   1 user  staff   1.2K 16 Oct 15:08 DfT_raw_minor_manipulation.py
drwxr-xr-x  21 user  staff   714B 22 Oct 11:35 Driving/
-rwxr-xr-x@  1 user  staff   295M 19 Oct 14:47 Raw-count-data-major-roads1.csv*
-rwxr-xr-x@  1 user  staff   446M 16 Oct 14:52 Raw-count-data-minor-roads1.csv*

.gitattributes ファイルを vim すると、lfs のセットアップが表示されます。

*.csv filter=lfs diff=lfs merge=lfs -text

私は何を間違っていますか?

アップデート

クエリすると

git lfs ls-files

何も返されません。これは、.csv フィルターが .gitattributes ファイルに正常に適用されているにもかかわらず、csv ファイルが lfs によって取得されていないことを示しています。

4

11 に答える 11

66

Git LFS 2.2.0 以降、コマンドを使用できますgit lfs migrate。あなたの場合、次のようになります。

git lfs migrate import --include="*.csv"

この後、変更をオリジンにプッシュできるはずです。

詳細についてgit lfs migrateは、Git LFS 2.2.0 リリース ノート サイトおよびgit-lfs-migrate コマンド ドキュメント を参照してください。

于 2020-12-29T20:37:34.300 に答える
28

既存のリポジトリに git-lfs 構成を追加するだけでは、大きなファイルをさかのぼって LFS サポートに変換することはできません。これらの大きなファイルは履歴に残り、GitHub はプッシュを拒否します。

既存のコミットに git-lfs を導入するには、履歴を書き直す必要があります。最近LFS サポートを追加した BFG リポジトリ クリーナー ツールをお勧めします。

次の方法で、CSV ファイルの使用履歴を変換できるはずです。

$ java -jar ~/bfg-1.12.5.jar --convert-to-git-lfs '*.csv' --no-blob-protection
于 2015-11-10T15:16:09.820 に答える
15

私は昨日同じ問題にぶつかり、それをクラックしました。プッシュできませんでした。大きなファイルが lfs にあるようには見えませんでした。

おそらくもっと良い方法がありますが、これは私にとってはうまくいきました。2.5 ギガのデータを含む大きなリポジトリがあります。

新しいレポをセットアップしてから、その中に lfs をセットアップします。 git lfs init

次に、さまざまなファイルの種類 git lfs track "*.pdb" git lfs track "*.dll" を構成し、変更をコミットしてプッシュしました。

次に、大きなファイルを追加しました。私はsourcetreeを使用しましたが、出力メモでは、ワイルドカードに一致する大きなファイルに対して、代わりに小さなtxtファイルをコミットしていると述べていました。(申し訳ありませんが、これらを記録していませんが、明らかなはずです)。

次にプッシュすると、「ファイルをスキップしています」と表示され、プッシュはすぐに成功しました。

したがって、問題はおそらく、既に履歴にある lfs にファイルを追加しようとしていることです。新しいファイルのみを追加できます。おそらく、これらのファイルのレポをきれいにすることができます。

注: ワイルドカードに一致するかなりの数のファイルが lfs によって取得されないことがわかりました。異なるフォルダー内の同様のファイルがピックアップされましたが、すべてではありませんでした。フルパスを使用してこれらのファイルを明示的に追加しようとしました。 git lfs track "Windows/bin/myBigFile.dll" しかし、それも役に立ちませんでした。結局、時間の都合で断念。

また、gitHub でストレージ制限を確認する必要があります。要件を満たすために追加の 50 ギガを購入しました。

リポジトリのクローンを作成すると、ファイルが個別にダウンロードされ、最終的にすべてが正常に機能します。

于 2015-11-11T17:39:27.347 に答える
13

csv ファイルの一部が以前のコミットでマージされ、github がプッシュを拒否している間、同じ問題に直面しました。後で、私のために働いたこのコマンドを見つけました。

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch fixtures/11_user_answer.json'
# for my case
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch tensorflow.csv'

元の投稿リンク

于 2020-01-12T00:57:54.997 に答える