Qu'est-ce que .gitignore exactement?

212

Je viens de créer un référentiel Github et je me demandais à quoi .gitignoreservait le fichier. J'ai commencé par ne pas en créer un, mais j'en ai ajouté un car la plupart des référentiels en ont un. Dois-je en avoir un? Puis-je / dois-je simplement l'ignorer ou est-ce utile? J'ai fait quelques recherches sur le sujet mais je n'ai pas trouvé d'explication concrète.

Zahachos
la source

Réponses:

175

.gitignoreindique à git quels fichiers (ou modèles) il doit ignorer. Il est généralement utilisé pour éviter de commettre des fichiers transitoires à partir de votre répertoire de travail qui ne sont pas utiles aux autres collaborateurs, tels que les produits de compilation, les fichiers temporaires créés par les IDE, etc.

Vous pouvez trouver tous les détails ici .

Mureinik
la source
Donc, si vous créez un .gitignore dans un nouveau référentiel sur github.com, puis faites un git init et git add . sur votre ordinateur local - pas encore connecté à .gitignore car il n'est pas encore connecté à ce référentiel - comment cela fonctionne-t-il? Cela prend-il effet lorsque j'effectue un commit git? Ou?
Xonatron
à quoi _._gitignoresert-il? est-il utilisé uniquement lorsque le gitignore est dans un sous-répertoire.?
Saikat Chakrabortty
Il reste donc localement, mais n'est pas poussé à l'origine? Donc, si certains utilisateurs téléchargent le dépôt github, ce fichier secret est-il également téléchargé?
Rencontrez Zaveri
Que signifie ignorer ? Qui / quoi / quand l'ignore-t-il? Je sais ce que signifie le mot ignorer, mais je ne trouve pas de description claire de ce que signifie ignorer dans le contexte de Git. Évidemment, le terme est totalement compréhensible par les gens qui le comprennent, mais tout ce qui est écrit pour définir quelque chose pour les gens qui ne le savent pas déjà doit expliquer tous les termes qui ont des définitions uniques au contexte.
user34660
1
@ user34660 Ignorer signifie simplement que - Git ne suivra pas les changements dans les fichiers spécifiés par (les modèles) dans le .gitignorefichier. Même si vous les modifiez, git ne les affichera pas comme modifiés.
Mureinik
42

C'est une liste de fichiers que vous voulez que git ignore dans votre répertoire de travail.

Supposons que vous êtes sur un Mac et que vous avez des fichiers .DS_Store dans tous vos répertoires. Vous voulez que git les ignore, vous ajoutez donc .DS_Store en tant que ligne dans .gitignore. Etc.

Les git docs vous diront tout ce que vous devez savoir: http://git-scm.com/docs/gitignore

Andy Lester
la source
2
Votre .DS_Storescénario a finalement résonné avec moi car je suppose que je ne m'accrochais pas à ce concept car je n'avais pas encore eu besoin de l'utiliser dans un projet. Je vous remercie. Je fini par utiliser ce comme point de départ que je l' utilise tous les différents systèmes d'exploitation prenant note en particulier la # OS generated files #section.
phoenixlaef
2
Je sais que je suis en retard sur ce sujet, mais merci @AndyLester! Je suis novice en matière de programmation et de Github. Je trouve que bon nombre des réponses écrites pour répondre à ce type de question sont remplies de termes que le novice pourrait ne pas comprendre (c.-à-d. Les produits de compilation, les fichiers temporaires créés par les IDE ... ce que sont les h @ ll!). Cependant, la description de votre Mac est parfaite dans sa simplicité élégante!
Vesuccio
21

Lorsque vous effectuez une validation, vous ne souhaitez pas accidentellement inclure des fichiers temporaires ou créer des dossiers spécifiques. Par conséquent, utilisez une .gitignoreliste des éléments que vous souhaitez ignorer lors de la validation.

En outre, il git status est important de noter que c'est l'une des commandes les plus fréquemment utilisées git statuspour répertorier les fichiers qui ont été modifiés.

Vous souhaitez que votre git statusliste soit propre à partir de fichiers indésirables. Par exemple, j'ai changé a.cpp, b.cpp, c.cpp, d.cpp & e.cppje veux que ma git statusliste les éléments suivants:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

Je ne veuxgit status pas lister les fichiers modifiés comme celui-ci avec les fichiers d'objet intermédiaires et les fichiers du dossier de construction

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

Par conséquent, pour me libérer de la git statusliste de ces fichiers temporaires intermédiaires et de les commettre accidentellement dans le repo, je devrais créer un fichier .gitignoreque tout le monde fait. Tout ce que j'ai à faire est de lister les fichiers et dossiers dans .gitignorelesquels je souhaite exclure la validation.

Ce qui suit est mon .gitignorepour éviter de commettre des fichiers inutiles

/*.cmake
/*.DS_Store
/.user
/build
programmer_of_the_galaxies
la source
7

Il y a des fichiers dans lesquels vous ne voulez pas que Git se connecte. Git considère chaque fichier de votre copie de travail comme l'une des trois choses suivantes:

  1. suivi - un fichier qui a été précédemment mis en scène ou validé;
  2. non suivi - un fichier qui n'a pas été mis en scène ou validé; ou
  3. ignoré - un fichier que Git a été explicitement invité à ignorer.

Les fichiers ignorés sont généralement des artefacts construits et des fichiers générés par la machine qui peuvent être dérivés de la source de votre référentiel ou ne devraient pas autrement être validés. Voici quelques exemples courants:

  • caches de dépendance, tels que le contenu /node_modulesou/packages
  • code compilé, tels que .o, .pycet les .classfichiers
  • construire des répertoires de sortie, tels que /bin, /outou/target
  • les fichiers générés lors de l' exécution, tels que .log, .lockou.tmp
  • fichiers système masqués, tels que .DS_StoreouThumbs.db
  • fichiers de configuration IDE personnels, tels que .idea/workspace.xml

Les fichiers ignorés sont suivis dans un fichier spécial nommé .gitignorequi est archivé à la racine de votre référentiel. Il n'y a pas de commande explicite git ignore: à la place, le .gitignorefichier doit être édité et validé à la main lorsque vous avez de nouveaux fichiers que vous souhaitez ignorer. .gitignoreles fichiers contiennent des modèles qui sont comparés aux noms de fichiers dans votre référentiel pour déterminer s'ils doivent être ignorés ou non. Voici un exemple de.gitignore fichier. Pour plus de détails, regardez ce lien

imk
la source
5

Objectif principal de .gitignore - vous évitez ainsi d'ajouter des fichiers non pertinents, etc. Git

J'ai beaucoup de notes personnelles / gribouillis dans certains référentiels: ils me sont utiles mais pas pour quelqu'un d'autre. Je ne voudrais pas qu'il soit téléchargé sur github car cela dérouterait simplement tous ceux qui le liraient. La bonne chose est que je peux demander à git d'ignorer ces fichiers. Le seul coût de cette approche est que je ne pourrai pas récupérer ces notes si mon ordinateur tombe en panne, etc.

BKSpurgeon
la source