Resync git repo avec un nouveau fichier gitignore
Est-il possible d ' "actualiser" un référentiel Git après la mise à jour du fichier gitignore?
Je viens d'ajouter plus d'ignorations (?) à mon gitignore et voudrait supprimer des choses déjà dans le repo correspondant au nouveau fichier.
2 réponses
La solution mentionnée dans ".le fichier gitignore n'ignorant pas " est un peu extrême, mais devrait fonctionner:
# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
(assurez-vous de commettre d'abord vos modifications, vous voulez garder, pour éviter tout incident jball037 les commentaires ci-dessous.
L'option --cached
conservera vos fichiers intacts sur votre disque.)
Vous avez également une autre solution plus fine dans le billet de blog "faire en sorte que Git ignore déjà suivi fichiers":
git rm --cached `git ls-files -i --exclude-standard`
Bassim suggère , dans son édition:
Fichiers avec de l'espace dans leurs chemins
Dans le cas où vous obtenez un message d'erreur comme
fatal: path spec '...' did not match any files
, il peut y avoir des fichiers avec des espaces dans leur chemin., Vous pouvez supprimer tous les autres fichiers avec l'option
--ignore-unmatch
:
git rm --cached --ignore-unmatch `git ls-files -i --exclude-standard`
Mais les fichiers non appariés resteront dans votre référentiel et devront être supprimés explicitement en enfermant leur chemin avec double citations:
git rm --cached "<path.to.remaining.file>"
Je pourrais mal comprendre, mais essayez-vous de supprimer des fichiers nouvellement ignorés ou voulez-vous ignorer les nouvelles modifications apportées à ces fichiers ? Dans ce cas, la chose est travail.
Si vous souhaitez supprimer les fichiers ignorés précédemment validés, utilisez
git rm –cached `git ls-files -i –exclude-standard`
git commit -m 'clean up'