Ignorez la.dossier gitignore lui-même

je viens de faire un git init sur la racine de mon nouveau projet.

puis j'ai créé un fichier .gitignore .

maintenant, quand je tape git status , .gitignore fichier apparaît dans la liste des sans traces de fichiers. Pourquoi est-ce?

914
demandé sur Arslan Ali 2009-04-20 10:42:27

19 réponses

le fichier .gitignore doit se trouver dans votre dépôt, il doit donc être ajouté et engagé, comme le suggère git status . Il doit être une partie de l'arborescence du dépôt, de sorte que des modifications peuvent être fusionnés et ainsi de suite.

donc, ajoutez-le à votre dépôt, il ne doit pas être gitignored.

si vous voulez vraiment ajouter .gitignore au fichier .gitignore si vous ne voulez pas qu'il soit engagé. Toutefois, dans ce cas, il est probablement mieux ajouter l'ignore .git/info/exclude , une caisse spéciale fichier local qui fonctionne .gitignore mais n'apparaît pas dans" git status "car il est dans le dossier .git .

Voir aussi https://help.github.com/articles/ignoring-files

880
répondu August Lilleaas 2015-01-02 10:24:30

si vous voulez stocker la liste des fichiers ignorés en dehors de votre arborescence Git, vous pouvez utiliser le .git/info/exclure "151920920 de fichier". Il est appliqué uniquement à la caisse des pensions.

265
répondu Paweł Hajdan 2011-04-06 14:25:43

, Vous pouvez effectivement mettre une ligne ".gitignore" dans votre ".gitignore de fichier". Ce serait la cause de la ".gitignore " fichier à ignorer par git. Je n'ai pas vraiment pense que c'est une bonne idée. Je pense que le fichier ignore devrait être contrôlé et suivi. Je suis juste de mettre ce qui existe pour l'exhaustivité.

70
répondu 1800 INFORMATION 2009-04-20 07:58:37

vous pouvez également avoir un utilisateur global git .gitignore fichier qui s'appliquera automatiquement à tous vos repos. Ceci est utile pour les fichiers IDE et editor (par exemple swp et *~ pour Vim). Changer l'emplacement des répertoires pour suivre votre système d'exploitation

  1. ajouter à votre ~/.gitconfig fichier

    [core]
    excludesfile = /home/username/.gitignore
    
  2. créer un ~/.gitignore fichier avec des motifs de fichier à ignorer

  3. Enregistrez vos fichiers point dans un autre repo afin d'avoir une sauvegarde (optionnel).

chaque fois que vous copiez, init ou cloner une pension de vos gitignore fichier sera utilisé.

49
répondu Alec the Geek 2018-03-20 03:46:14

après avoir ajouté le fichier .gitignore et l'avoir engagé, il n'apparaîtra plus dans la liste" untracked files".

git add .gitignore
git commit -m "add .gitignore file"
git status
38
répondu Greg Hewgill 2009-04-20 06:50:37

si quelqu'un a déjà ajouté un .gitignore à votre repo, mais que vous voulez y apporter quelques modifications et que ces modifications soient ignorées, faites ce qui suit:

git update-index --assume-unchanged .gitignore

Source .

38
répondu Leif Gruenwoldt 2011-02-09 20:19:07

juste incase quelqu'un d'autre a la même douleur que nous. Nous voulions exclure un dossier déjà engagé.

ce billet était bien plus utile: travailler avec .git/info/exclure trop tard

spécifiquement ce dont vous avez besoin pour ignorer un fichier est en fait d'utiliser la commande git remove Voir git rm ( http://www.kernel.org/pub/software/scm/git/docs/git-rm.html )

vous test

git rm --dry-run *.log

(si vous dites voulu exclure tous les fichiers de log)

cela affichera ce que serait exclu si vous l'aviez lancé.

puis

vous l'exécutez

git rm *.log

(ou quel que soit nom du fichier chemin d'accès / expression que vous voulez)

ajoutez ensuite une ligne *.log à votre fichier .gitignore .

20
répondu Evolve 2017-05-23 12:34:45

l'idée est de mettre des fichiers spécifiques à votre projet dans le fichier .gitignore et (comme déjà mentionné) de l'ajouter au dépôt. Par exemple, les fichiers .pyc et .o , les logs que le site de test crée, certaines fixtures, etc.

pour les fichiers que votre propre configuration crée mais qui n'apparaîtront pas nécessairement pour chaque utilisateur( comme les fichiers .swp si vous utilisez vim, les répertoires ecplise cachés et similaires), vous devez utiliser .git/info/exclude (comme déjà mentionné).

15
répondu bayer 2017-07-21 11:51:41

bien sûr le .le fichier gitignore apparaît sur le statut, parce qu'il est introuvable, et git le voit comme un nouveau fichier savoureux à manger!

depuis .gitignore est un fichier non piraté, mais c'est un candidat à ignorer par git quand vous le mettez .gitignore!

ainsi, la réponse est simple: il suffit d'ajouter la ligne:

.gitignore # Ignore the hand that feeds!

à la vôtre .gitignore fichier!

et, contrairement à la réponse d'August, je devrais dire que ce n'est pas que de la .le fichier de gitignore devrait être dans votre dépôt. Il se trouve juste qu'il peut être, ce qui est souvent commode. Et il est probablement vrai que c'est la raison .gitignore a été créé comme une alternative à .git/info / exclude, qui n'a pas l'option d'être suivi par le dépôt. En tout cas, comment vous utilisez votre .gitignore fichier est totalement à vous.

pour référence, consultez le gitignore(5) page de manuel kernel.org.

14
répondu chase 2009-06-11 20:01:50

tout d'abord, comme beaucoup d'autres l'ont déjà dit, votre .gitignore doit être suivi par Git (et ne doit donc pas être ignoré). Laissez-moi vous expliquer pourquoi.

(TL;DR: d'engager la .gitignore du fichier, et l'utilisation d'un global .gitignore pour ignorer les fichiers qui sont créés par votre IDE ou système d'exploitation)

Git est, comme vous le savez probablement déjà, une le contrôle de version distribué système . Cela signifie qu'il vous permet de passer d'une version à l'autre (même si le développement a divergé en différentes branches) et il permet également à plusieurs développeurs de travailler sur le même projet.

bien que le suivi de votre .gitignore ait aussi des avantages lorsque vous passez d'un snapshot à l'autre, la raison la plus importante pour l'engager est que vous voulez partager le fichier avec d'autres développeurs qui travaillent sur le même projet. Par en propageant le fichier dans Git, les autres contributeurs obtiendront automatiquement le fichier .gitignore lorsqu'ils cloneront le dépôt, de sorte qu'ils n'auront pas à se soucier de propager accidentellement un fichier qui ne devrait pas être propagé (tels que les fichiers journaux, les répertoires de cache, les justificatifs d'identité de la base de données, etc.). Et si à un moment donné le projet .gitignore est mis à jour, ils peuvent simplement tirer dans ces changements au lieu d'avoir à éditer le fichier manuellement.

bien sûr, il y aura des fichiers et les dossiers que vous aurez envie d'ignorer, mais qui sont spécifiques pour vous, et ne s'appliquent pas à d'autres développeurs. Cependant, ceux-ci ne devraient pas être dans le .gitignore du projet . Il y a deux autres endroits où vous pouvez ignorer les fichiers et les dossiers:

  • les fichiers et dossiers qui sont créés par votre système d'exploitation ou IDE doivent être placés dans un global .gitignore . L'avantage est que cette .gitignore est appliqué à tous les dépôts sur votre ordinateur, donc vous n'avez pas à le répéter pour chaque dépôt. Et il n'est pas partagé avec d'autres développeurs, car ils pourraient utiliser un système d'exploitation et/ou IDE différent.
  • les fichiers qui n'appartiennent pas au projet .gitignore , ni au global .gitignore , peuvent être ignorés en utilisant le dépôt explicite exclut dans your_project_directory/.git/info/exclude . Ce fichier ne sera pas partagé avec d'autres développeurs, et spécifique à ce référentiel unique
14
répondu Nic Wortel 2015-11-12 08:55:23

attention au" problème " suivant parfois vous voulez ajouter des répertoires mais pas de fichiers dans ces répertoires. La solution simple est de créer un .gitignore avec le contenu suivant:

*

cela fonctionne très bien jusqu'à ce que vous réalisiez que le répertoire n'a pas été ajouté (comme prévu à votre dépôt. La raison pour cela est que la .gitignore sera aussi ignoré, et donc le répertoire est vide. Donc, vous devriez faire quelque chose comme ceci:

*
!.gitignore
10
répondu Maze 2011-07-19 12:46:58

cela ne semble fonctionner que pour votre répertoire courant pour obtenir Git d'ignorer tous les fichiers du dépôt.

mettre à jour ce fichier

.git/info/exclude 

avec votre Joker ou votre nom de fichier

*pyc
*swp
*~
7
répondu Naskov 2013-07-09 11:36:24

Dans mon cas, je veux exclure un fichier existant. Seulement modifier .gitignore pas de travail. J'ai suivi ces étapes:

git rm --cached dirToFile/file.php
vim .gitignore
git commit -a

de cette façon, j'ai nettoyé du cache le fichier que je voulais exclure et après l'avoir ajouté à .gitignore .

4
répondu Andrea Perdicchia 2014-05-05 09:44:56

accédez au répertoire de base de votre git repo et exécutez la commande suivante:

echo '\.*' >> .gitignore

tous les fichiers de points seront ignorés, y compris ce qui est embêtant .DS_Store si vous êtes sur mac.

3
répondu weffen 2013-06-28 16:51:28

si vous avez déjà enregistré .gitignore et vous voulez ignorer les modifications à elle, Vérifiez cette réponse :

essayez cette commande:

git update-index --assume-unchanged FILENAME_TO_IGNORE

pour l'inverser (si vous voulez y apporter des modifications), utilisez:

git update-index --no-assume-unchanged

mise à JOUR :

Voici comment faire la liste 'supposons inchangé' répertoire:

git ls-files -v | grep -E "^[a-z]"

comme l'option -v utilisera des lettres minuscules pour "supposer inchangé" fichier.

3
répondu Aaron 2017-05-23 12:10:41

Il est tout à fait possible qu'un utilisateur veut avoir Git d'ignorer ".gitignore " simplement parce que les dossiers IDE spécifiques créés par Eclipse ne sont probablement pas les mêmes que NetBeans ou un autre IDE. Donc, pour garder le code source IDE antagoniste il rend la vie facile d'avoir un git personnalisé ignore qui n'est pas partagé avec toute l'équipe que les développeurs individuels pourraient être en utilisant différents IDE.

1
répondu John Brown 2013-03-13 03:32:07

je pense qu'il y a des situations où l'on ignore le .gitignore est très utile. Par exemple, lorsque vous avez plusieurs équipes ou une grande équipe travaillant sur la même base de données. Dans ce cas, vous devez avoir certaines conventions, l'une de ces conventions concerne ce qui est ignoré lors de la prise en pension git. Il s'agit généralement d'ignorer les fichiers et répertoires créés par IDE ou OS, certains journaux générés, etc.

cependant, il y a une force qui tend à introduire modifications non conventionnelles au fichier .gitignore . Le fichier .gitignore peut être modifié par une personne irresponsable, par erreur, par un outil utilisé, ou dans un autre cas.

Pour avoir une force contraire à cela, nous pouvons le faire comme suit:

  1. La première .gitignore devrait refléter la convention en équipe(s),
  2. , Après il est poussé, le .gitignore doit être sécurisé par ajout .l'entrée de gitignore et pousser ce changement encore.Le fichier .gitignore est scellé " de cette façon.

le" sealed .gitignore fichier peut être modifié, juste localement, sans propager que les changeurs à d'autres membres de l'équipe(s). Toutefois, si un changement fait l'objet d'un large consensus dans l'ensemble de l'équipe(des équipes), il n'est pas possible de le "déverrouiller", de le modifier et de le "sceller" à nouveau. On ne peut pas faire ça par erreur, mais intentionnellement.

Malheureusement, vous ne pouvez pas être protégé à 100% de la stupidité, mais de cette façon vous avez fait tout ce que vous pouvez pour empêcher les choses stupides d'arriver.

si vous avez une équipe relativement petite avec de très bons professionnels, que ce ne serait pas important, mais même ces gars apprécieraient d'avoir une chose de moins à se soucier.

L'utilisation de .git/info/exclude est cool quand vous ne pouvez rien faire au sujet des paramètres d'infrastructure, couvrant juste votre propre a** de ne pas faire un erreur.

D'un point de vue de ce qui est juste et de ce qui est mal, je vote pour avoir .entrée gitignore à l'intérieur du fichier .gitignore , donnant à chacun la liberté de faire localement ce qu'il veut, mais sans en envahir d'autres.

1
répondu Sasa 2016-08-30 13:38:55

j'ai trouvé que le meilleur endroit pour mettre en place un ignorer aux fichus .DS_Store est dans le fichier .git/info/exclude .

IntelliJ semble le faire automatiquement lorsque vous configurez un dépôt git.

0
répondu Stephen McConnell 2012-10-05 14:07:31

.gitignore consiste à ignorer autres fichiers. git est à propos des fichiers donc il s'agit d'ignorer les fichiers. Cependant, comme git travaille hors fichiers, ce fichier doit être là comme mécanisme pour lister les autres noms de fichiers.

si on l'appelait .the_list_of_ignored_files ça pourrait être un peu plus évident.

une analogie est une liste de choses à faire que vous ne voulez pas faire. À moins que vous ne les énumériez quelque part est une sorte de liste "à faire" vous ne pas les connaître.

0
répondu Michael Durrant 2014-03-17 19:29:39