Githubのファイルサイズ制限である100.00 MBより大きいcsvファイルがいくつかあります。 Git Large File Storage拡張機能を使用しようとしています。
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によってピックアップされていないことを示します
既存のリポジトリにgit-lfs構成を追加するだけでは、大きなファイルをさかのぼってLFSサポートに変換しません。これらの大きなファイルは履歴に残り、GitHubはプッシュを拒否します。
既存のコミットにgit-lfsを導入するには、履歴を書き直す必要があります。 LFSサポートの追加 最近のBFGリポジトリクリーナーツールをお勧めします。
CSVファイルの使用履歴を次の方法で変換できるはずです。
$ Java -jar ~/bfg-1.12.5.jar --convert-to-git-lfs '*.csv' --no-blob-protection
昨日、同じ問題にぶつかり、それを解読しました。私はプッシュすることができず、私の大きなファイルはどれも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ギガを購入しました。
リポジトリのクローンを作成すると、ファイルが個別にダウンロードされ、すべてが最終的に正常に機能するようになります。
私はこのエラーがありました:
リモート:エラー:ファイル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'
キャッシュから削除するために完全なファイルパス(上記のエラーから)を配置した場所。その後、プッシュが正常に行われました
存在するレポにlfsをインストールするだけでは不十分な場合があります。コミット履歴を変更することもできます。これがあなたに役立つことを願っています。
どのコミットが大きなコミットを引き起こしたかがわかっている場合は、Git LFSを導入した後続のコミットでそのコミットを潰すこともできます。
たとえば、大きなコミットが3回前のコミットであった場合(git status
)、次のことができます。
git rebase -i HEAD~3
次に、対話型ダイアログで最初の「ピック」の使用をすべて「スカッシュ」に置き換えます。
その後、
git Push Origin --force