web-dev-qa-db-ja.com

Git lfs-「これはGitHubのファイルサイズ制限である100.00 MBを超えています」

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によってピックアップされていないことを示します

25
LearningSlowly

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

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

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

$ Java -jar ~/bfg-1.12.5.jar --convert-to-git-lfs '*.csv' --no-blob-protection
22
Edward Thomson

昨日、同じ問題にぶつかり、それを解読しました。私はプッシュすることができず、私の大きなファイルはどれも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"しかし、それも助けにはなりませんでした。最終的に、時間の制約のためにgaveめました。

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

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

9
Philip Taylor

私はこのエラーがありました:

リモート:エラー:ファイルclient/static/static-version/20171221_221446.psdは223.61 MBです;これは、GitHubのファイルサイズ制限である100.00 MBを超えています

そして、このフォルダーからこのファイルを既に削除し、.gitignoreファイルを作成し、数回コミットしようとしたため、キャッシュされていることを知りませんでした。githubにプッシュできませんでした。私の場合、助けた:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch client/static/static-version/20171221_221446.psd'

キャッシュから削除するために完全なファイルパス(上記のエラーから)を配置した場所。その後、プッシュが正常に行われました

3
Yarik

これはあなたを助けるかもしれません enter image description here

Click-OriginalWebPage

存在するレポにlfsをインストールするだけでは不十分な場合があります。コミット履歴を変更することもできます。これがあなたに役立つことを願っています。

0
anKotliner

どのコミットが大きなコミットを引き起こしたかがわかっている場合は、Git LFSを導入した後続のコミットでそのコミットを潰すこともできます。

たとえば、大きなコミットが3回前のコミットであった場合(git status)、次のことができます。

git rebase -i HEAD~3

次に、対話型ダイアログで最初の「ピック」の使用をすべて「スカッシュ」に置き換えます。

その後、

git Push Origin --force
0
Eric