Qu'est-ce qu'un fichier .gitignore et comment le configurer ?  – CloudSavvy IT
Agence web » Actualités du digital » Qu’est-ce qu’un fichier .gitignore et comment le configurer ? –

Qu’est-ce qu’un fichier .gitignore et comment le configurer ? –

Un fichier .gitignore est un fichier texte placé dans votre référentiel git qui indique à git de ne pas suivre certains fichiers et dossiers que vous ne souhaitez pas télécharger dans votre référentiel maître. Il a de nombreuses utilisations et vous devrez presque toujours le configurer si vous configurez un nouveau dépôt.

Quel est l’intérêt de .gitignore ?

Dans la plupart des projets, il existe une différence entre code/config et fichiers générés à partir de ce code ou de cette configuration. Ce dernier n’est généralement pas utile et peut généralement être ignoré.

Habituellement, vous souhaitez uniquement que le code et la configuration soient suivis via git. En effet, les fichiers générés sont éphémères et si vous les supprimez, vous pouvez simplement les régénérer à nouveau. Il est souvent inutile de les télécharger, car ils compliqueront simplement les choses et provoqueront des conflits de fusion inutiles.

Il s’agit d’une définition large, alors regardons un exemple. Dans les projets Node JS, il existe un dossier appelé node_modules qui contient tous les packages externes dont votre code a besoin pour s’exécuter. Vous pouvez supprimer ce répertoire et le reconstruire complètement en exécutant npm install, qui utilise le package.json configuration pour rechercher des packages.

Alors, quel est l’intérêt d’avoir le node_modules dossier dans Git? Il n’y en a pas vraiment, car il est plus compliqué, peut causer des problèmes et peut même augmenter considérablement la taille du référentiel Git dans de nombreux cas.

Si vous ignorez l’intégralité du répertoire, tous vos collègues peuvent toujours générer leur propre copie locale à partir du package.json déposer. Donc, au lieu de cela, seulement package.json doit être suivi dans Git. La plupart des choses qui sont ajoutées à .gitignore suivre ce modèle. Construisez des artefacts, comme un ./bin/ dossier, ne vous engagez pas car ils sont le résultat direct du code lui-même.

D’autres éléments peuvent également être ajoutés à .gitignore pour plus de commodité. MacOS génère des fichiers système appelés .DS_store, que vous pouvez toujours ignorer. Peut-être que vous stockez des clés API dans .env/ que vous ne voulez pas être suivi dans le contrôle de source, vous pouvez également les ajouter. Les caches, journaux et autres sorties peuvent généralement être ignorés.

Utiliser .gitignore

Vous devrez créer un fichier appelé .gitignore, sans extensions, à la racine de votre projet où votre .git répertoire se trouve. Vous pouvez le faire depuis votre navigateur de fichiers ou depuis la ligne de commande avec n’importe quel éditeur de texte CLI :

nano .gitignore

Vous pouvez le configurer de plusieurs manières, mais les principaux outils dont vous disposez sont :

  • * des caractères génériques, qui correspondent à n’importe quel texte et peuvent être utilisés pour correspondre à n’importe quel répertoire ou fichier, quelle que soit son extension.
  • !, qui fonctionne comme une sorte de liste blanche qui annule un fichier précédemment exclu. Le principal problème avec ceci est qu’il ne met en liste blanche le fichier que s’il a été directement exclu et ne fonctionnera pas pour les fichiers dans des répertoires qui ont été complètement exclus.
  • **, qui correspond à n’importe quoi de manière récursive dans les répertoires. Par example, **/*.json correspondra à n’importe quel fichier JSON, peu importe où il se trouve, et src/** correspondra à chaque fichier du dossier de manière récursive. Ceci est utile lorsque vous souhaitez ajouter une liste blanche et ne pas ignorer tout le répertoire.

Par exemple, un gitignore de Node JS peut ressembler à ceci :

node_modules/
build/
npm-debug.log
.env
.env.test
.env.production
.DS_Store
.npm
.eslintcache
logs/
*.log
npm-debug.log*

Liste blanche des fichiers avec ! peut être très utile pour de nombreuses configurations. Par exemple, dans l’un de mes projets, j’avais un outil appelé steamcmd qui télécharge les dépendances des serveurs de jeu depuis Steam. Cet outil est emballé dans un seul exécutable portable, mais il produit beaucoup de déchets que je ne veux pas suivre dans Git.

La solution consistait à tout ignorer dans le dossier, mais à ajouter l’exécutable à la liste blanche. Cela fonctionnera pour tout exécutable portable qui se développe comme celui-ci ou produit des fichiers inutiles dans le répertoire.

Project/steamcmd/**
!Project/steamcmd/steamcmd.exe

gitignore utilise également d’autres modèles de globalisation Unix pour faire correspondre les chaînes, comme un point d’interrogation pour faire correspondre un seul caractère, ou [a-z] qui correspondra aux jeux de caractères.

Vous pouvez également écrire plusieurs .gitignore fichiers qui peuvent correspondre à des fichiers relatifs à eux-mêmes. Ce n’est pas vraiment utile car vous pouvez simplement inclure les règles dans le fichier racine, ce qui est plus facile à suivre, mais cela pourrait aider à la répétition du code dans certains cas. Cependant, la solution de contournement consiste à utiliser des jeux de caractères pour faire correspondre plusieurs répertoires. Par exemple, faire correspondre les répertoires en majuscules et en minuscules avec un ensemble :

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/

Si vous rencontrez des problèmes avec votre .gitignore configuration, vous pouvez le déboguer avec le check-ignore Commande Git :

git check-ignore -v testfile.json

.gitignore global

Git a également un paramètre global pour .gitignore, mais il ne devrait pas vraiment être utilisé dans la plupart des cas. C’est parce que le monde .gitignore sur votre ordinateur ne s’applique pas à vos collègues, et uniquement aux commits effectués avec votre instance de Git.

Si vous souhaitez quand même le définir, vous pouvez le faire avec la commande suivante :

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

Forcer la validation ou le stockage des fichiers ignorés

La validation forcée est généralement une mauvaise idée – vous devriez probablement ajouter une liste blanche pour ce fichier spécifique, car une fois validé, les mises à jour de ce fichier ne seront pas suivies. Mais, si vous voulez valider manuellement quelque chose, vous pouvez exécuter git add avec le --force paramètre:

git add -f debug.log

De même, git stash peut également stocker des modifications locales dans des fichiers ignorés, ce qui peut être utile car cela n’affectera pas le référentiel distant :

git stash --all

★★★★★