Appliquer.gitignore à commis des fichiers
j'ai commis des charges de fichiers que je veux maintenant ignorer. Comment puis-je dire à git d'ignorer ces fichiers de futures propagations?
EDIT: je ne veux pas les supprimer à partir du référentiel. Ce sont des fichiers créés après chaque compilation ou pour un support d'outils spécifique à l'utilisateur.
6 réponses
- Modifier
.gitignore
pour trouver le fichier que vous souhaitez ignorer -
git rm --cached /path/to/file
voir aussi:
après avoir édité .gitignore
pour faire correspondre les fichiers ignorés, vous pouvez faire git ls-files -ci --exclude-standard
pour voir les fichiers qui sont inclus dans les listes d'exclusion; vous pouvez ensuite faire git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
pour les supprimer du dépôt (sans les supprimer du disque).
Edit : vous pouvez aussi ajouter ceci comme alias dans votre .gitconfig fichier de sorte que vous pouvez l'exécuter à tout moment vous voulez. Il suffit d'ajouter la ligne suivante dans la section [alias]:
apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
(le drapeau -r
dans xargs
empêche git rm
de tourner sur un résultat vide et d'imprimer son message d'utilisation, mais ne peut être supporté que par GNU findutils. D'autres versions de xargs
peuvent ou non avoir une option similaire.)
maintenant vous pouvez taper git apply-gitignore
dans votre repo, et il fera le travail pour vous!
pour conserver le fichier dans le repo mais ignorer les modifications futures:
git update-index --assume-unchanged <file>
et pour annuler ceci:
git update-index --no-assume-unchanged <file>
pour savoir quels fichiers ont été configurés de cette façon:
git ls-files -v|grep '^h'
crédit pour la réponse originale à http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files /
assurez-vous que votre rapport actuel est la dernière version
- Modifier
.gitignore
comme tu veux -
git rm -r --cached .
-
git add .
puis engagez-vous comme d'habitude
Vieille question, mais certains d'entre nous sont dans git-posh
(powershell). C'est la solution pour cela:
git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }
suivez ces étapes:
-
Ajouter un chemin d'accès à
gitignore
fichier -
exécuter cette commande
git rm -r --cached foldername
-
valider les modifications, comme d'habitude.