876 votes

Comment ignorer certains fichiers dans Git

J'ai un référentiel avec un fichier, Hello.java. Lorsque je le compile, un fichier supplémentaire Hello.class est généré.

J'ai créé une entrée pour Hello.class dans un fichier .gitignore. Cependant, le fichier semble toujours être suivi.

Comment puis-je faire en sorte que Git ignore Hello.class ?

9 votes

Que voulez-vous dire par "ça ne fonctionne pas"? Avez-vous peut-être déjà ajouté Hello.class à votre dépôt? Les fichiers gitignores n'ont aucun effet sur le contenu qui est déjà suivi. Voir par exemple stackoverflow.com/questions/1139762/gitignore-file-not-ignor‌​ing

1 votes

950voto

Ondrej Slinták Points 9922

Le problème est que .gitignore ignore seulement les fichiers qui n'ont pas été suivis avant (par git add). Exécutez git reset nom_du_fichier pour annuler le suivi du fichier et le conserver. Dans le cas où vous voulez également supprimer le fichier donné du dépôt (après avoir poussé), utilisez git rm --cached nom_du_fichier.

233 votes

La commande git rm --cached nom_du_fichier supprimera le fichier de votre dépôt git. Même si vous l'ajoutez à votre fichier .gitignore. Ce n'est pas ignorer, c'est supprimer.

6 votes

Ce qui semble être ce que l'OP voulait dans ce cas.

48 votes

Je suis contente que votre solution ait fonctionné pour @Kohan95! Cependant, cette question devrait être renommée en fonction de la réponse sélectionnée. Mes commentaires sont juste un avertissement aux développeurs qui pourraient ne pas être au courant de ce que la commande fait.

289voto

Xman Classical Points 605

Comment ignorer les nouveaux fichiers

Globalement

Ajoutez le(s) chemin(s) de votre fichier(s) que vous souhaitez ignorer dans votre fichier .gitignore (et committez-les). Ces entrées de fichier s'appliqueront également à d'autres personnes consultant le dépôt.

Localement

Ajoutez le(s) chemin(s) de votre fichier(s) que vous souhaitez ignorer dans votre fichier .git/info/exclude. Ces entrées de fichier s'appliqueront uniquement à votre copie de travail locale.

Comment ignorer les fichiers modifiés (temporairement)

Pour ignorer les fichiers modifiés et les empêcher d'apparaître comme modifiés, vous pouvez utiliser la commande git suivante:

git update-index --assume-unchanged   

Pour annuler cette ignorance, utilisez la commande suivante:

git update-index --no-assume-unchanged

0 votes

Parfait pour éviter qu'un fichier contenant une clé API actuelle ne soit poussé sur Github !

1 votes

@Xman Pourquoi as-tu dit que c'est temporaire? J'ai suivi les étapes que tu as mentionnées pour ignorer local git, et j'ai redémarré mon système, cela montre toujours un travail propre directement.

1 votes

Merci pour le truc utile update-index, absolument parfait pour éviter de modifier un fichier .gitignore, qui est ensuite suivi par Git !

165voto

Armand Points 4075

Ajoutez la ligne suivante au fichier .gitignore :

/Hello.class

Cela exclura Hello.class de Git. Si vous l'avez déjà commis, exécutez la commande suivante :

git rm Hello.class

Si vous souhaitez exclure tous les fichiers de classe de Git, ajoutez la ligne suivante à .gitignore :

*.class

33 votes

Ajouter Hello.class à .gitignore ignorera tout fichier appelé Hello.class dans n'importe quel sous-répertoire. Si vous avez l'intention d'ignorer seulement le fichier Hello.class dans le même répertoire que le fichier .gitignore, utilisez à la place la ligne /Hello.class.

0 votes

Où placez-vous le fichier .gitignore ?

6 votes

@Imray vous pouvez mettre .gitignore n'importe où dans un projet git - si un chemin commence par /, il sera relatif à l'emplacement du fichier .gitignore; sinon, il fera référence de manière récursive aux fichiers du répertoire actuel et de ses répertoires descendants.

53voto

kapillohakare Points 184

Vous pouvez utiliser les méthodes ci-dessous pour ignorer/ne pas ignorer les modifications apportées aux fichiers suivis.

  1. Pour ignorer : git update-index --assume-unchanged
  2. Pour rétablir les fichiers ignorés : git update-index --no-assume-unchanged

4 votes

Est-ce que cela s'applique à tous les fichiers? Il n'est pas clair comment ces commandes peuvent être appliquées à un seul fichier pour l'ignorer/ne pas l'ignorer.

0 votes

@kapil enfin !! quelque chose qui fonctionne vraiment parmi un trillion de variations de commandes git ! J'ai essayé toutes les réponses pour ignorer quelques fichiers build.xml stupides qui apparaissaient après chaque construction...merci !

1 votes

S'il vous plaît ne : 'Assume-unchanged ne doit pas être abusé pour un mécanisme d'ignorance. C'est "Je sais que mes opérations sur le système de fichiers sont lentes. Je promets à Git que je ne vais pas changer ces chemins…" Surtout, ce n'est pas une promesse… que Git considérera toujours ces chemins comme non modifiés - si Git peut déterminer qu'un chemin… a changé sans encourir de coût supplémentaire de lstat(2), il se réserve le droit de signaler que le chemin a été modifié (…git commit -a est libre de commettre ce changement).'

22voto

terminus Points 3966

Créez un fichier .gitignore dans le répertoire où se trouve le répertoire .git. Vous pouvez lister les fichiers dedans séparés par un saut de ligne. Vous pouvez également utiliser des caractères génériques :

*.o
.*.swp

3 votes

Il est conseillé d'éviter de mettre des motifs spécifiques à un outil (c'est-à-dire vos fichiers temporaires Vim) dans les fichiers .gitignore (à moins que cet outil ne soit imposé par le projet). Vous pouvez mettre des motifs pour vos outils préférés dans votre fichier d'exclusions utilisateur (définissez core.excludesFile); ils fonctionneront dans tous vos dépôts. Par exemple, git config --global core.excludesFile "$HOME/.git-user-excludes", puis placez-les dans ce fichier.

0 votes

@Chris: Merci pour le conseil. Mais je l'ai juste écrit là car rien de mieux ne me venait à l'esprit :)

1 votes

@ChrisJohnsen 'spécifique à l'outil?' pour vim?? je pense qu'il est prudent d'exclure les fichiers d'échange vim..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X