Question Resync git repo avec un nouveau fichier gitignore


Est-il possible de "rafraîchir" un dépôt git après la mise à jour du fichier gitignore?

J'ai simplement ajouté plus d'ignorations (?) À mon gitignore et je voudrais supprimer les éléments déjà présents dans le dépôt correspondant au nouveau fichier.


140
2017-08-16 09:10


origine


Réponses:


La solution mentionnée dans "Fichier .gitignore ne pas ignorer"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 que vous souhaitez conserver, pour éviter tout incident comme jball037  commentaires ci-dessous.
le --cached l'option gardera vos fichiers intacts sur votre disque.)

Vous avez également une autre solution plus fine dans l'article du blog "Faire Git ignorer les fichiers déjà suivis":

git rm --cached `git ls-files -i --exclude-standard`

Bassim suggère dans son édition:

Fichiers avec un espace dans leurs chemins

Si vous recevez un message d'erreur comme fatal: path spec '...' did not match any files, il pourrait y avoir des fichiers avec des espaces sur 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 sans correspondance resteront dans votre référentiel et devront être supprimés explicitement en entourant leur chemin de guillemets:

git rm --cached "<path.to.remaining.file>"

272
2017-08-16 09:24



Je peux mal comprendre, mais essayez-vous de supprimer les fichiers nouvellement ignorés ou voulez-vous ignorer les nouvelles modifications apportées à ces fichiers? Dans ce cas, la chose fonctionne.

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'

7
2017-08-17 01:14