GitHub refuse un fichier de plus de 100 Mo
Ce qui vient de se passer
Un gros fichier (vidéo, dataset, build, node_modules…) est dans un de tes commits non poussés. Le supprimer dans un nouveau commit ne suffit pas : il est toujours dans l'historique que Git essaie d'envoyer.
Risques potentiels
- Réécrire des commits déjà poussés impacte tes collègues.
Avant d'exécuter quoi que ce soit
- Besoin de versionner de gros fichiers ? Utilise plutôt Git LFS.
- Règle d'or : avant toute commande destructrice, crée une branche de secours avec git branch backup/before-fix — ça ne coûte rien.
Étapes de récupération
- 1
Trouver le commit qui l'a ajouté
Liste les commits locaux pas encore sur le remote, avec leurs fichiers.
Sans risque$ git log --stat origin/main..HEAD - 2
Il est dans le dernier commit
Retire-le du commit en le gardant sur le disque, puis ignore-le.
Prudence$ git rm --cached path/to/big-file$ echo "path/to/big-file" >> .gitignore$ git commit --amend --no-edit - 3
Il est dans un commit plus ancien non poussé
Réécrit tous les commits non poussés pour enlever le fichier. Nécessite git filter-repo (à installer) ; --force car ce n'est pas un clone neuf. Fais d'abord une branche de secours.
Destructrice$ git branch backup/before-fix$ git filter-repo --force --invert-paths --path path/to/big-file --refs origin/main..HEAD
Ces procédures sont fournies à titre informatif. Lis chaque commande et adapte-la à ta situation avant de l'exécuter. Disclaimer