J'ai quelques fichiers csv qui sont plus grands que la limite de taille de fichier de github de 100,00 Mo. J'ai essayé d'utiliser l'extension Git Large File Storage.
Depuis LFS - "Large file versioning- Version large files—even those as large as a couple GB in size—with Git."
J'ai appliqué ce qui suit sur les dossiers préoccupants:
git lfs track "*.csv"
Cependant, quand je pousse:
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
Quand je regarde le dossier en question:
-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*
quand je vim le fichier .gitattributes vous pouvez voir la configuration de lfs:
*.csv filter=lfs diff=lfs merge=lfs -text
Qu'est-ce que je fais mal?
MISE À JOUR
Quand je demande
git lfs ls-files
Je ne reçois rien en retour. Cela indique que malgré l'application réussie du filtre .csv au fichier .gitattributes, les fichiers csv ne sont pas récupérés par lfs
Le simple fait d'ajouter la configuration git-lfs à un référentiel existant ne convertira pas rétroactivement vos fichiers volumineux au support LFS. Ces gros fichiers resteront dans votre historique et GitHub refusera vos push.
Vous devez réécrire votre historique pour introduire git-lfs à vos validations existantes. Je recommande l'outil de nettoyage de référentiel BFG, qui ajout du support LFS récemment.
Vous devriez pouvoir convertir l'historique d'utilisation de vos fichiers CSV en:
$ Java -jar ~/bfg-1.12.5.jar --convert-to-git-lfs '*.csv' --no-blob-protection
J'ai touché le même problème hier et l'ai résolu. Je n'ai pas pu pousser, et il est apparu qu'aucun de mes gros fichiers n'était dans lfs.
Il y a probablement une meilleure façon, mais cela a fonctionné pour moi. J'ai un grand dépôt avec 2,5 Go de données.
J'ai installé un nouveau dépôt, puis j'ai installé lfs. git lfs init
J'ai ensuite configuré mes différents types de fichiers git lfs track "*.pdb" git lfs track "*.dll"
J'ai ensuite validé mes modifications et j'ai poussé.
J'ai ensuite ajouté mes gros fichiers. J'ai utilisé sourcetree, et dans les notes de sortie, il indiquait pour les gros fichiers correspondant à mes caractères génériques qu'il commettait à la place un petit fichier txt. (désolé, je ne les ai pas enregistrés, mais cela devrait être évident).
Puis j'ai poussé, et j'ai vu "sauter des fichiers", et le Push a réussi rapidement.
le problème est donc probablement en train d'ajouter des fichiers à lfs qui sont déjà dans votre historique. Vous ne pouvez ajouter que de nouveaux fichiers. Vous pouvez probablement nettoyer votre dépôt de ces fichiers.
Remarque: J'ai constaté que pas mal de fichiers correspondant à mes caractères génériques n'étaient pas récupérés par lfs. Des fichiers similaires dans différents dossiers ont été récupérés, mais pas tous. J'ai essayé d'ajouter explicitement ces fichiers en utilisant le chemin complet. git lfs track "Windows/bin/myBigFile.dll"
mais cela n'a pas aidé non plus. Finalement, j'ai abandonné en raison de contraintes de temps.
Vous devez également vérifier votre limite de stockage avec gitHub. J'ai acheté le 50gig supplémentaire pour couvrir mes besoins.
Le clonage du dépôt télécharge désormais les fichiers séparément et tout fonctionne enfin bien.
J'ai eu cette erreur:
à distance: erreur: le fichier client/statique/version statique/20171221_221446.psd fait 223,61 Mo; cela dépasse la limite de taille de fichier de GitHub de 100,00 Mo
Et parce que j'ai déjà supprimé ce fichier de ce dossier, créé un fichier .gitignore et essayé de valider plusieurs fois, je ne savais pas qu'il était mis en cache, je ne pouvais pas pousser vers github. Dans mon cas, a aidé:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch client/static/static-version/20171221_221446.psd'
Où j'ai placé le chemin complet du fichier (à partir de l'erreur ci-dessus) pour le supprimer du cache. Après cela, Push a réussi
Seule l'installation de lfs dans un référentiel existant peut ne pas suffire. Vous pouvez également modifier l'historique des validations. J'espère que cela fonctionne pour vous.
Si vous savez quel commit a introduit le gros commit, vous pouvez également essayer d'écraser ce commit avec les commits suivants qui ont introduit Git LFS.
Par exemple, si le grand commit a été effectué il y a trois validations (comme le révèle git status
), vous pouvez effectuer les opérations suivantes:
git rebase -i HEAD~3
Ensuite, remplacez toutes les utilisations "pick" après la première par "squash" dans la boîte de dialogue interactive.
Ensuite,
git Push Origin --force