Ne peut pas pousser à GitHub, car de gros fichier que j'ai déjà supprimé
Actuellement, j'ai
- Vide dépôt GitHub
- Serveur SSH repo (principale)
- Local Repo
Serveur SSH repo a été le plus up-to-date de dépôt (site de production) donc j'ai fait un Git clone à partir de là que local. J'ai ensuite essayé de faire un git push
à GitHub.
Tout est OK, mais ensuite, il dit quelque chose à propos de filename.gz être trop grand pour GitHub. Je n'ai pas besoin de ce fichier et j'ai effectué plusieurs commandes Git pour se débarrasser de lui à partir de Git cache puis repoussé au serveur SSH.
Je ne vois pas le gros fichier en local, mais il est toujours sur le serveur SSH, même si git diff
ne retourne rien et git push renvoie "Tout est à jour" - Et même si le fichier n'est pas visible dans les locaux de pensions lorsque j'essaie de faire un push sur GitHub, j'obtiens toujours l'erreur à ce sujet
à distance: erreur: le Fichier fpss.tar.gz est 135.17 MO; il dépasse de GitHub limite de taille de fichier de 100 MO
J'ai suivi les étapes de la section "régler le problème" inscrites sur GitHub aider et donc ne devrait pas avoir été suffisante?
Comment le fichier est toujours dans l'éther quand il n'est pas locale ou de la liste de git status/diff/push?
- Le fichier est toujours là dans l'histoire. Vous avez besoin de détruire l'histoire, peut-être par l'écrasement de la s'engage à ce que d'ajouter et de retirer le fichier.
- J'ai suivi les étapes de la section "régler le problème" figurant sur ce site...ne pourrait-il pas avoir été suffisante? help.github.com/articles/working-with-large-files
- La commande n'est plus avancée que ma connaissance de git, donc je ne peux pas vraiment dire. De toute façon, si
git log -- the_big_file
est de retourner quoi que ce soit, alors le fichier est toujours dans l'histoire. - qui renvoie rien ><
- Pourrait-il être que vous êtes aussi en poussant d'autres branches où le fichier existe? Aussi, si le fichier est toujours présent sur le serveur, pourquoi
git push
dire que tout est à jour? Depuis que vous avez changé l'histoire, il devrait se plaignent du fait que la poussée n'est pas possible et que vous auriez à la force. - Exactement, il ne fait pas de sens. Il est à seulement 1 branche master. Ssh a master + un mannequin de la branche (j'ai créé afin que je puisse pousser à son maître). @Shahbaz
- Si vous avez le terminal où vous avez fait toutes ces ouvert, il serait probablement aider si vous collez les commandes et les messages (la suppression des informations personnelles). Il pourrait y avoir quelque chose qui vous semble sans importance mais qui en réalité est.
- Peut le faire, mais voici un Q. Si tout dans son état actuel est ok et je n'ai pas besoin de la précédente histoire. Puis-je supprimer le dossier git et refaire la commande git init sur local puis essayer de pousser à GitHub sans aucun problème? @Shahbaz
- Oui pense que je peut le faire @Shahbaz stackoverflow.com/questions/9683279/...
- Si votre histoire n'est pas question pour vous, que vous pouvez le faire. Il ne serait pas agréable. Une chose que vous pourriez faire est de créer une branche spécifiquement pour github, squash tous votre histoire en un seul commit (effectivement la même chose que ce que vous avez dit, mais pas la suppression des autres branches) et pousser cette branche particulière de github. Plus tard, lorsque l'on s'engage dans la
master
branche par exemple, vous pouvez choisir tous et de les appliquer à la github branche. (pas sûr si la fusion de travail, mais si elle le pouvait, alors ce serait encore mieux) - Trouvé la solution ici : czettner.com/2015/07/16/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Cela va supprimer tout ce qui dans l'histoire de ce fichier. Le problème est que le fichier est présent dans l'histoire.
Cette commande modifie les valeurs de hachage de vos commits qui peut être un réel problème, en particulier sur le partage des référentiels. Il ne doit pas être effectuée sans en comprendre les conséquences.
--all
drapeau au lieu deHEAD
git push origin master
, et finalement retiré toute référence à la trop grande fichiers dans le repo.Rewrite 657560fa18c030bcfac9132ce1c3541e84a5bc2c (1/10) (0 seconds passed, remaining 0 predicted) /usr/lib/git-core/git-filter-branch: 1: eval: Syntax error: end of file unexpected
"
au lieu de guillemets simples.fatal: ambiguous argument 'rm': unknown revision or path not in the working tree.
est-ce parce que le fichier est supprimé?J'ai trouvé l'écrasement de plus utile que
filter-branch
. J'ai fait la suivante:git reset
.--soft HEAD~3
git commit -m
"New message for the combined commit"
Cas particulier (à partir de l'utilisateur @lituo): Si le ci-dessus ne fonctionne pas, alors vous pourriez avoir ce cas. Commettre 1 est inclus dans le fichier de grande taille et de Commettre des 1 push a échoué à cause de la grande erreur de fichier. Commettre 2 supprimé le fichier volumineux par
git rm --cached [file_name]
mais Commettent 2 de pousser encore échoué. Vous pouvez suivre les mêmes étapes que ci-dessus mais au lieu d'utiliserHEAD~3
, utilisezHEAD~2
.Si le fichier a été ajouté à votre plus récente commettre, et vous n'ont pas poussé à GitHub, vous pouvez supprimer le fichier et de modifier les commettre, Prises de ici:
untracked
la liste des fichiers àgit status
.git rm --cached giant_file commit_id
mais il ne fonctionne pas 🙁Voici quelque chose que j'ai trouvé super utile si vous avez déjà été déconner avec votre pension avant d'avoir demandé de l'aide. Premier type:
Après cela, vous devriez voir quelque chose le long des lignes de
L'important, c'est le "2 s'engage"! À partir d'ici, allez-y et tapez:
Donc, pour l'exemple ci-dessus, on aura:
Après que vous avez tapé, votre "git status" devrait dire:
À partir de là, vous pouvez supprimer le fichier de grande taille (en supposant que vous ne l'avez pas déjà fait), et vous devriez être en mesure de re-commettre tout sans perdre votre travail.
Je sais que ce n'est pas un super-chic répondre, mais j'espère que cela aide!
J'ai eu un problème similaire et utilisé le l'étape ci-dessus pour supprimer le fichier. Il a parfaitement fonctionné.
Puis j'ai une erreur sur un deuxième fichier que je devais enlever:
remote: error: File <path/filename> is 109.99 MB; this exceeds GitHub's file size limit of 100.00 MB
J'ai essayé la même étape, vous avez une erreur:
"A previous backup already exists in <path/filename>"
De la recherche sur ce site internet j'ai utilisé la commande:
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch <path/filename>" --prune-empty --tag-name-filter cat -- --all
Très travaillé, et les gros fichiers ont été supprimés.
Incroyablement, la poussée n'a toujours pas avec une autre erreur:
error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 104 fatal: The remote end hung up unexpectedly
Ce que je le fixe en modifiant directement la .git config fichier -
postBuffer = 999999999
Après que la pression est passé par!
git rm
j'avais besoin de donner la pleine référentiel de nom de chemin d'accès pour le fichier et pour échapper à la # avec une barre oblique inverse pour le faire fonctionnerreset hard
étape au bas de la page avec une simple pression. czettner.com/2015/07/16/...Pourquoi GitHub de rejet de mon repo, même après que j'ai supprimé le fichier big?
Git stocke l'historique complet de votre projet, de sorte que même si vous supprimez un fichier à partir de votre projet, le repo Git a encore une copie du fichier dans son histoire, et si vous essayez de pousser à un autre référentiel (comme un hébergé sur GitHub) puis Git nécessite la distance repo a la même histoire que vos pensions de fait (c'est à dire le même de gros fichiers c'est de l'histoire).
Comment puis-je obtenir GitHub à accepter mon repo?
Vous avez besoin de nettoyer l'historique de Git de votre projet au niveau local, en supprimant le superflu de gros fichiers à partir de l'histoire, et ensuite utiliser uniquement le 'nettoyés' histoire d'aller de l'avant. Le Git commit id concerné s'engage va changer.
Comment dois-je nettoyer les gros fichiers de mon repo Git?
Le meilleur outil pour le nettoyage indésirables gros fichiers de l'historique de Git est le BFG Repo-Cleaner - c'est plus simple, plus rapide, alternative à
git-filter-branch
spécialement conçu pour supprimer les fichiers d'historique de Git.Suivez attentivement les les instructions d'utilisation, la partie centrale est simplement ceci:
Tout les fichiers de plus de 100 mo (qui ne sont pas dans votre dernière commettre) sera supprimé de votre dépôt Git de l'histoire. Vous pouvez ensuite utiliser
git gc
pour nettoyer la mort des données:Le BFG est habituellement d'au moins 10-50x plus rapide que la course
git-filter-branch
, et généralement beaucoup plus facile à utiliser.Divulgation complète: je suis l'auteur de la BFG Repo-Cleaner.
J'ai eu le même problème et aucune réponse de travailler pour moi. J'ai résolu par les étapes suivantes:
1. Trouver qui commit(s) contenant le fichier de grande taille
Bas commettre est la plus ancienne s'engager dans la liste des résultats.
2. Trouver le juste avant la plus ancienne.
Supposons que vous avez obtenu:
3. Git rebase
Conseils:
drop
pour les commits contient le fichier de grande taille.git rebase --continue
de continuer jusqu'à ce que vous terminer.git rebase --abort
de l'annuler.