Question Ignorer les fichiers qui ont déjà été validés dans un référentiel Git [dupliquer]


Cette question a déjà une réponse ici:

J'ai un référentiel Git déjà initialisé que j'ai ajouté un .gitignore fichier à. Comment puis-je actualiser l'index de fichier pour que les fichiers que je veux ignorer soient ignorés?


2189
2017-07-16 19:26


origine


Réponses:


Pour dépister un unique fichier qui a déjà été ajouté / initialisé à votre référentiel, c'est à dire., arrête le suivi du fichier mais ne le supprime pas de l'utilisation de votre système: git rm --cached filename

Pour déraper chaque fichier qui est maintenant dans votre .gitignore:

Commençons d'abord les modifications de code en attente, puis exécutez cette commande:

git rm -r --cached .

Cela supprime tous les fichiers modifiés du indice(zone de transit), puis exécutez simplement:

git add .

Engagez-le:

git commit -m ".gitignore is now working"

Défaire git rm --cached filename, utilisation git add filename.

Assurez-vous de valider tous vos changements importants avant de courir git add .    Sinon, vous perdrez toutes les modifications apportées à d'autres fichiers.


3656
2017-07-06 17:09



Si vous essayez d'ignorer les modifications apportées à un fichier déjà enregistré dans le référentiel (par exemple, un fichier dev.properties que vous devrez modifier pour votre environnement local, mais que vous ne voudrez plus jamais vérifier ces modifications) que ce que vous voulez faire est:

git update-index --assume-unchanged <file>

Si vous voulez recommencer à suivre les modifications

git update-index --no-assume-unchanged <file>

Voir git-update-index (1) Page du manuel.

Regardez aussi le skip-worktree et no-skip-worktree options pour update-index si vous avez besoin de cela pour persister après un git-reset (via)


Mettre à jour: Depuis que les gens ont demandé, voici un alias pratique (et mis à jour depuis commenté ci-dessous) pour voir quels fichiers sont actuellement "ignorés" (--assume-inchangé) dans votre espace de travail local

$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

518
2017-09-14 23:55



Pour supprimer un fichier qui a déjà été ajouté / initialisé dans votre référentiel, c'est-à-dire arrêter le suivi du fichier sans le supprimer de votre système, utilisez: git rm --cached filename


351
2017-07-18 08:15



Oui - .gitignore Le système ignore uniquement les fichiers qui ne sont pas actuellement sous le contrôle de version de git.

C'est à dire. si vous avez déjà ajouté un fichier appelé test.txt en utilisant git-add, puis en ajoutant test.txt à .gitignore va encore provoquer des changements à test.txt être suivi.

Vous auriez à git rm test.txt d'abord et commettre ce changement. Alors seulement, les changements à test.txt Etre ignoré.


78
2018-02-02 15:59



Supprimer les espaces de fin dans .gitignore

Assurez-vous également que vous n'avez aucun espace de fin dans votre .gitignore. Je suis arrivé à cette question parce que je cherchais une réponse, alors j'ai eu une drôle de sensation que je devrais ouvrir l'éditeur au lieu de juste cat'ing .gitignore. Suppression d'un espace supplémentaire de la fin et poof ça fonctionne maintenant :)


50
2017-07-15 07:22



j'ai suivi ces étapes

git rm -r --cached .
git add .
git reset HEAD

après cela, git supprime tous les fichiers (* .swp dans mon cas) qui devraient être ignorés.


40
2018-03-02 09:00



Si vous voulez arrêter le fichier de suivi sans supprimer le fichier de votre système local, que je préfère ignorer config/database.yml fichier. Essayez simplement:

git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.

maintenant, ajoutez ce fichier à .gitignorefichier et valider les modifications. Et à partir de maintenant, les modifications apportées à config / database.yml ne seront pas suivies par git.

$ echo config/database.yml >> .gitignore

Merci


37
2017-08-21 14:20