Devez-vous valider .gitignore dans les dépôts Git?

497

Pensez-vous que c'est une bonne pratique de valider .gitignore dans un dépôt Git?

Certaines personnes ne l'aiment pas, mais je pense que c'est bien car vous pouvez suivre l'historique du fichier. N'est-ce pas?

Howard
la source
38
sinon, mettez .gitignore dans .gitignore ...
CharlesB
Possible doublon d' ignorer le fichier .gitignore lui
Michael Freidgeim

Réponses:

489

Normalement, il .gitignoreest utile pour tous ceux qui souhaitent travailler avec le référentiel. À l'occasion, vous voudrez ignorer des choses plus privées (peut-être que vous créez souvent LOGou quelque chose. Dans ces cas, vous ne voudrez probablement pas imposer cela à quelqu'un d'autre.

Bruce Stephens
la source
137
+1 Les "objets privés" peuvent être mentionnés dans le $GIT_DIR/info/excludeou les ~/.gitconfigfichiers selon le cas.
WReach
5
Si vous avez déjà un fichier archivé et que vous souhaitez l'ignorer, Git n'ignorera pas le fichier si vous ajoutez une règle ultérieurement. Dans ces cas, vous devez d'abord décompresser le fichier, en exécutant la commande suivante dans votre terminal:git rm --cached FILENAME
eli-bd
133

En général , vous faites commettre .gitignore. En fait, je vais personnellement jusqu'à m'assurer que mon index est toujours propre lorsque je ne travaille pas sur quelque chose. ( git statusne devrait rien montrer.)

Il y a des cas où vous voulez ignorer des choses qui ne sont vraiment pas spécifiques au projet. Par exemple, votre éditeur de texte peut créer *~des fichiers de sauvegarde automatique , ou un autre exemple serait les .DS_Storefichiers créés par OS X.

Je dirais que si d'autres se plaignent de ces règles qui encombrent votre .gitignore, laissez-les de côté et placez-les plutôt dans un fichier d'exclusion global.

Par défaut, ce fichier réside $XDG_CONFIG_HOME/git/ignore(par défaut ~/.config/git/ignore), mais cet emplacement peut être modifié en définissant l' core.excludesfileoption. Par exemple:

git config --global core.excludesfile ~/.gitignore

Créez et modifiez simplement le fichier d'exclusion global au contenu qui vous tient à cœur; cela s'appliquera à chaque référentiel git sur lequel vous travaillez sur cette machine.

Stéphan Kochen
la source
14
Vous pouvez toujours ajouter des # some commentlignes au .gitignorefichier pour expliquer pourquoi vous ignorez quelque chose. Commentant chaque ligne est un peu exagéré, mais j'ont des sections étiquetés # IDE (Eclipse), # OS (Mac OS X)et # Generated (Perl). De cette façon, si quelqu'un veut utiliser un autre système d'exploitation ou IDE, il peut ajouter une section et nous pouvons tous partager.
Stuart R. Jefferys
9
"Je vais personnellement jusqu'à m'assurer que mon index est toujours propre lorsque je ne travaille pas sur quelque chose. (Le statut git ne devrait rien montrer.")
SGhosh
4
Nb. avec Git moderne, la valeur par défaut de core.excludesfileest ~/.config/git/ignore, conforme aux spécifications du répertoire de base XDG
Jakub Narębski
1
+1 pour global .gitignore- Extrêmement bénéfique lorsque les personnes avec lesquelles vous travaillez ne sont pas d'accord sur le contenu des .gitignorefichiers poussés ou si elles doivent être poussées, et nous utilisons tous des tonnes d'environnements de développement différents qui génèrent différents types de bruit.
Krease
1
davidwalsh.name/global-gitignore quelques informations supplémentaires sur l'
ignorance
11

Je mets commit .gitignore, qui est une courtoisie envers les autres qui peuvent construire mon projet que les fichiers suivants sont dérivés et doivent être ignorés.

Je fais habituellement un hybride. J'aime que makefile génère le fichier .gitignore car le makefile connaîtra tous les fichiers associés au projet, dérivé ou non. Ensuite, ayez un projet de niveau supérieur .gitignore que vous archivez, qui ignorerait les fichiers .gitignore générés créés par le makefile pour les différents sous-répertoires.

Donc, dans mon projet, je pourrais avoir un sous-répertoire bin avec tous les exécutables construits. Ensuite, mon makefile générera un .gitignore pour ce répertoire bin. Et dans le répertoire supérieur .gitignore qui répertorie bin / .gitignore. Le premier est celui que j'enregistre.

Bitdiot
la source
0

La validation de .gitignore peut être très utile, mais vous devez vous assurer de ne pas trop la modifier par la suite, surtout si vous changez régulièrement de branche. Si vous le faites, vous pourriez obtenir des cas où les fichiers sont ignorés dans une branche et pas dans l'autre, vous forçant à supprimer manuellement ou à renommer les fichiers de votre répertoire de travail car une extraction a échoué car elle écraserait un fichier non suivi.

Par conséquent, oui, engagez votre .gitignore, mais pas avant d'être raisonnablement sûr qu'il ne changera pas grand-chose par la suite.

user3464496
la source
-6

C'est une bonne pratique pour .gitignore au moins vos produits de build (programmes, * .o, etc.).

Jakub Narębski
la source
11
Cela ne répondait pas à la question: devrait .gitignore -il être lui-même " .gitignore'd"?
Charles Wood
6
Faites attention, ce n'était pas la question, et cela répond à ce qui a été demandé: "est-ce une bonne pratique de commettre .gitignore dans un dépôt Git?".
papercowboy
5
@cayuu je crois que la réponse dit "c'est une bonne pratique de .gitignore" xyz, je ne vois pas comment cela répond à la question. la question est de savoir si .gitignore doit être contrôlé par version ou non.
Nightograph