git rm-fatal: pathspec ne correspond à aucun fichier
j'ai ajouté plus de 9000 photos par accident à mon dossier de projet. Et les a commis. Puis les a effacés du disque. Engager.
maintenant j'essaie de pousser les modifications sur Git server. Mais il prend trop de temps et essaie d'envoyer 12 Go de données.
j'ai vérifié la taille des fichiers sur le disque et je vois que vraiment le dossier .git
prend 12 Go.
comment supprimer les photos de là? J'ai essayé git rm
, mais ça ne marche pas.:
❯ git rm public/photos
fatal: pathspec 'public/photos' did not match any files
parce que je les ai déjà effacés du disque, mais ils sont toujours dans le dossier .git
.
j'ai essayé d'ajouter public/photos
à .gitignore
:
public/photos/
*.zip
mais pas de résultat.
Bien sûr, je pourrais hard reset head
à l'instant où je n'ai pas eu autant de photos de camelote dans mon projet. Mais depuis, je me suis engagé à plusieurs reprises et j'ai fait beaucoup de changements dans le code.
5 réponses
dans votre cas, utilisez git filter-branch
au lieu de git rm
.
git rm
supprimera les fichiers dans le sens où ils ne seront plus suivis par git, mais cela ne supprimera pas les anciens objets commit correspondant à ces images, et donc vous serez toujours coincé à pousser les premières propagations qui correspondent à 12 Go d'images.
le git filter-branch
, d'autre part, peut supprimer ces fichiers de tous la précédente s'engage ainsi, s'éloignant de la nécessité de pousser l'un d'eux.
-
utilisez la commande
git filter-branch --force --index-filter \ 'git rm -r --cached --ignore-unmatch public/photos' \ --prune-empty --tag-name-filter cat -- --all
-
une fois la branche filtrante terminée, vérifier qu'aucun fichier inattendu n'a été perdu.
-
ajouter maintenant A.règle de gitignore
echo public/photos >> .gitignore git add .gitignore && git commit -m "ignore rule for photos"
-
Maintenant faire un " push
git push -f origin branch
Vérifier ce , ce et ce pour obtenir de l'aide. Juste pour être sur le côté plus sûr, je vous suggérerais de créer une copie de sauvegarde du rapport sur votre système avant d'aller de l'avant avec ces instructions.
quant à votre message d'erreur original, il se produit parce que vous les avez déjà déverrouillés en utilisant git rm
, et donc git se plaint parce qu'il ne peut pas supprimer un fichier qu'il ne suit pas. Lire pour en savoir plus, cliquez ici .
une réponse très simple est.
Étape 1:
ajoutez D'abord vos fichiers non tracés que vous souhaitez supprimer en utilisant git add .
ou git add <filename>
.
Étape 2:
puis les supprimer facilement en utilisant la commande git rm -f <filename>
ici rm =supprimer et - f =forcer.
Étape 1
ajoutez le(S) nom (s) de fichier à votre fichier .gitignore
.
Étape 2
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch YOURFILE' \
--prune-empty --tag-name-filter cat -- --all
Étape 3
git push -f origin branch
Un grand merci à @mu.
git stash
a fait le travail,
Il a restauré les fichiers que j'avais supprimés en utilisant rm
au lieu de git rm
.
j'ai d'abord fait une vérification du dernier hachage, mais je ne crois pas que ce soit nécessaire.
cette chaîne fonctionne dans mon cas:
-
git rm -r WebApplication/packages
il y avait une boîte de dialogue de confirmation. Vous devriez choisir" y " option.
-
git commit -m "blabla"
-
git push -f origin <ur_branch>