Une introduction à Git

Publié: 2022-06-30

Que vous construisiez un tout nouveau site Web, que vous développiez un thème ou un plug-in, ou que vous mettiez en place des stratégies avancées d'intégration et de déploiement continus, vous travaillerez avec du code.

Sous chaque site Web, du code est exécuté, que vous utilisiez WordPress, WooCommerce, Drupal, Magento, NextJS ou même du HTML codé à la main. Il existe des ensembles de fichiers nécessaires pour rendre chaque page et afficher le contenu dans le monde.

Ce que vous découvrez rapidement, c'est que vous avez besoin d'un moyen de suivre les changements de code au fil du temps. Vous devez savoir quelles modifications se trouvent dans la version la plus récente de n'importe quel fichier et qui a effectué chaque modification.

C'est là qu'intervient Git. Continuez à lire pour en savoir plus sur Git, travailler avec des référentiels Git distants, et plus encore.

Comprendre Git

Git est un système de contrôle de version qui permet aux développeurs et à toute autre personne travaillant avec des fichiers de créer et de stocker facilement des versions de leurs modifications, de consulter un historique de ces modifications et de partager ces modifications entre les appareils et les systèmes, tout en offrant un moyen pour annuler ces modifications en cas de problème.

Une histoire brève

En 2005, une équipe de développeurs créait un projet appelé Linux, le système d'exploitation libre et open source. Ils avaient besoin d'un moyen de communiquer facilement les changements parmi des centaines de contributeurs. À l'origine, ils avaient distribué des correctifs individuels contenant le code mis à jour, mais cela s'est avéré problématique sur de nombreux fronts, en particulier pour déterminer quelle était la «vraie» et la dernière version d'un ensemble particulier de modifications.

Frustré par ces problèmes, le projet Linux a conduit Linus Torvald à mettre en œuvre une idée plutôt nouvelle pour un projet visant à partager l'ensemble de la base de code entre les développeurs et à prendre des "instantanés" de leurs modifications, appelées commits, qui pourraient être partagées et fusionnées avec n'importe quelle autre copie de le code, partout dans le monde. Cela a immédiatement facilité la communication, car toutes les modifications du projet pouvaient être considérées comme un seul historique.

Cette méthode pour capturer ces instantanés est Git, qui a rapidement pris sa propre vie et a été développée indépendamment du projet Linux depuis.

Un graphique des changements

Conceptuellement, vous pouvez considérer Git comme un graphique de nœuds, où chaque nœud est un instantané de l'ensemble du projet à un moment donné. Le livre Git, sur git-scm.com décrit la structure d'un instantané.

Git stocke les données sous forme d'instantanés du projet au fil du temps

Cette chaîne d'instantanés construit un graphique au fil du temps, avec la version la plus récente au premier plan ou en haut de votre historique des modifications. Chaque instantané est appelé « commit » dans Git.

Voici un aperçu rapide de ce à quoi ressemble un projet Git si vous placez la modification la plus récente en haut du graphique. Remarque - cet exemple utilise l'interface graphique GitKraken Git pour visualiser le graphique.

Exemple de graphe git

Construire le graphe Git

Git construit ce graphique de modifications, également connu sous le nom d'historique Git, via un processus de validation des modifications. Cependant, avant de pouvoir valider les modifications, vous devrez indiquer spécifiquement à Git ce que vous souhaitez ajouter à cet instantané, ou valider comme il est correctement mentionné dans Git.

Lorsque vous travaillez localement, toutes les modifications que vous enregistrez dans votre projet se trouvent dans votre "répertoire de travail". Git peut voir ces modifications, mais ne sait pas encore quelles modifications vous souhaitez valider. Vous devrez indiquer explicitement à Git les modifications que vous souhaitez valider en utilisant une commande appelée "git add" pour ajouter ces fichiers spécifiques à la "zone de préparation" de Git.

Une fois que vous avez les modifications de fichier que vous souhaitez valider dans le graphique des instantanés de projet, vous pouvez ensuite utiliser la commande "Git commit" pour créer de manière permanente cet instantané sur le graphique.

Les étapes d'ajout et de validation de Git

Remonter dans le temps

L'un des avantages de Git et de la disponibilité de l'intégralité de l'historique de votre projet est que vous pouvez revenir en arrière et annuler toutes les modifications à tout moment.

Si le dernier commit que vous faites casse quelque chose, ou si vous changez d'avis sur ce que vous avez fait, vous pouvez faire un "Git revert" pour annuler le commit Git. Cela crée un nouveau commit sur le graphique qui annule simplement les modifications que vous venez d'apporter.

Si vous voulez remonter dans le temps et donner l'impression que vous n'avez jamais fait de commit, vous pouvez utiliser "Git reset" pour le faire.

Le pouvoir des branches et des fusions dans Git

L'une des fonctionnalités les plus puissantes que Git nous offre est la possibilité de créer des réalités alternatives parallèles. Pas vraiment.

Étant donné que vous créez un graphique des commits au fil du temps, vous pouvez choisir de créer des lignes parallèles de commits, appelées branches, à partir de n'importe quel point de votre historique. Une branche Git nouvellement créée est indépendante de l'historique principal, ce qui signifie que vous êtes libre d'apporter les modifications que vous souhaitez et que cela n'affectera pas vos autres travaux. La chronologie principale est également une branche et est le plus souvent appelée branche "principale" ou "maître". Les nouvelles branches et les branches autres que principales sont communément appelées "branches de fonctionnalité".

Une fois que vous avez apporté les modifications à votre branche de fonctionnalité, vous pouvez appliquer toutes les modifications à la branche principale en effectuant une fusion Git.

Il y a un grand avantage à travailler de cette façon. Une branche de fonctionnalité isole les modifications de code, donc si vous introduisez des erreurs, vous pouvez être assuré que la branche principale est sûre. Travailler dans les branches libère également la branche principale au cas où vous auriez besoin d'appliquer une mise à jour ou un correctif de sécurité sans interrompre le travail de développement en cours.

La fusion Git vous permet également d'extraire les modifications de la branche principale dans une branche de fonctionnalité. Cela vous donne la possibilité de vous assurer que les mises à jour apportées à la branche principale fonctionneront toujours avec vos modifications proposées avant d'essayer de les fusionner avec "main".

Si vous travaillez avec une équipe, une stratégie de création de branches Git peut garantir que votre équipe peut tester minutieusement les modifications avant qu'elles ne passent en production et fournir un moyen simple de gérer le processus.

Travailler avec des référentiels distants dans Git

L'un des principaux objectifs de Git est de simplifier le partage de code avec des personnes du monde entier. La notion de référentiel distant est intégrée à Git.

Un référentiel Git est l'intégralité du dossier du projet dans lequel vous stockez votre travail et c'est ce que Git suit au fil du temps. Chaque référentiel peut être cloné à l'aide de la commande Git clone et partagé un nombre illimité de fois, ce qui rend Git très évolutif.

Un autre aspect qui rend Git très évolutif est que si vous modifiez un document, vous n'avez pas besoin de stocker une copie entièrement nouvelle de ce document. Les modifications sont stockées sous forme de petits paquets d'informations appelés "deltas", et seules les lignes modifiées individuellement d'un fichier et un peu de données sur la modification sont ce que Git a besoin de stocker ou de partager. Les deltas sont très légers, souvent de quelques octets seulement. Par exemple, si vous modifiez une seule ligne dans un document de 100 Ko, le delta ne sera que de 20 octets environ.

Pour que tout reste en ligne et cohérent sur toutes les copies d'un référentiel, il vous suffit de désigner quelle copie, située sur quel ordinateur, est la "véritable" copie du projet, puis de vous assurer que vos commits parviennent à cette copie.

Cela fonctionne aussi dans l'autre sens. Lorsque vous collaborez avec d'autres personnes, vous pouvez extraire leurs modifications dans votre copie locale du référentiel pour vous assurer que votre copie locale du projet est à jour.

Le modèle git de travail avec des référentiels distants

Il existe un certain nombre d'entreprises qui rendent la collaboration sur des référentiels distants extrêmement simple et gérable. Des plates-formes telles que GitHub, GitLab et BitBucket offrent des outils d'hébergement et de collaboration de référentiels Git en ligne. Il existe plusieurs millions de référentiels Git en ligne gérés par des millions de développeurs, et Git suit chaque source de vérité, quel que soit le nombre de personnes qui collaborent.

Ce qu'il ne faut pas stocker dans Git

Parlons de ce que vous ne devriez probablement pas faire avec Git. Bien que Git soit formidable pour partager du code et suivre les modifications au fil du temps, certaines tâches ne sont pas bien adaptées au modèle. Heureusement, Git nous donne un moyen pratique de lui dire d'ignorer les choses, appelé un fichier ".gitignore".

Si un fichier ".gitiginore" est présent, Git le vérifiera pour voir s'il doit surveiller ces éléments. Dans un ".gitiginore", vous pouvez répertorier des noms de fichiers individuels, des répertoires entiers ou des types entiers de fichiers. Par exemple, si vous vouliez exclure tous les fichiers .png et .jpg et tout votre dossier « wp-content/uploads », dans vos fichiers « .gitiginore », vous écririez simplement :

 *.png *.jpg wp-content/uploads

Pourquoi exclure les fichiers multimédias de Git ?

Git stocke des instantanés d'un projet et ne transmet que les "deltas". Mais si le fichier en question est un "blob" de données, comme une image, une vidéo ou tout autre fichier binaire, chaque modification du fichier créera un tout nouveau blob de données. Git doit ensuite se souvenir de l'état de l'ancien blob et du nouveau blob, ajoutant beaucoup de taille inutile au référentiel. Cela s'accumule au fil du temps et les référentiels deviennent rapidement lourds à mesure que vous perdez les avantages légers de Git.

Croyez-le ou non, vous ne voudrez peut-être pas suivre les changements dans le cœur de WordPress lui-même. Il y a plusieurs raisons à cela.

Tout d'abord, il y a un vieil adage avec n'importe quel CMS : "Ne piratez pas le noyau !" Rien de ce que vous modifiez dans le cœur de WordPress ne devrait avoir besoin d'être suivi. Toutes les mises à jour devront provenir de WordPress lui-même et si vous voulez une version antérieure, cela est facilement spécifié lorsque vous l'installez. Vous pouvez absolument stocker une installation WordPress entière dans Git, mais il n'y a pas beaucoup de valeur à le faire dans certaines situations. Vous ne voulez vraiment suivre que les modifications apportées au code que vous manipulez, comme vos plugins personnalisés et vos thèmes enfants. C'est une très bonne idée de vérifier auprès de votre fournisseur d'hébergement pour obtenir des conseils sur ce sujet.

Deuxièmement, si vous envisagez de contribuer à WordPress, vous constaterez qu'il est en fait maintenu via un ancien système de contrôle de version appelé SVN. Ce modèle nécessite une infrastructure de serveur central et est beaucoup moins populaire que Git, mais encore une fois, WordPress est plus ancien que Git. Travailler avec le système de correctifs SVN est un peu différent et vous devriez consulter leur documentation pour en savoir plus à ce sujet.

Conclusion

J'espère que vous comprenez maintenant mieux ce qu'est Git et comment il peut être utilisé pour travailler avec le code de votre site Web. Git peut être utilisé pour tous les fichiers que vous modifierez au fil du temps, même s'il ne s'agit pas de code informatique.

Git désigne ses utilisateurs cibles comme des "travailleurs du savoir", un ancien terme emprunté à IBM. Pour tout, des notes sur votre bureau aux recettes, en passant par des livres entiers, Git vous permet de mieux organiser votre travail et de vous laisser une trace solide de la raison pour laquelle vous avez effectué chaque modification et de la date à laquelle elle a été effectuée.

La possibilité de remonter dans le temps et de voir vos modifications, associée à la possibilité de travailler dans des univers parallèles illimités avec branchement et fusion, fait de Git un outil indispensable pour quiconque travaille sur du code. Git est également le principal moyen de collaboration des équipes sur les projets de code.

Git est gratuit et la plupart des interfaces graphiques Git, comme GitKraken, ont des versions gratuites. Il n'y a aucune raison pour que vous n'utilisiez pas Git pour suivre votre travail, alors « Git » !

Ressources associées

- Développement local WordPress avec XAMPP

- Utilisation avancée de Git et flux de travail

- Crochets Git

- Qu'est-ce qu'un site de développement ?

- Mise en cache pour WordPress