Tutoriel Git : premiers pas avec ce système de gestion de versions
Développer des projets logiciels en commun n’est pas une activité propre aux entreprises : dans le secteur open source, plusieurs centaines voire, pour certains projets, plusieurs milliers de volontaires et bénévoles contribuent à la maintenance, à l’optimisation, au développement continu ou à la modification d’un programme. Sans un système adapté permettant aux différents développeurs d’enregistrer et de contrôler les nombreuses modifications, les projets de ce type seraient difficiles à mettre en œuvre.
L’une des solutions les plus appréciées pour gérer les versions est le logiciel libre Git, qui est facile à prendre en main et entièrement gratuit. Dans ce tutoriel, nous vous enseignons toutes les bases essentielles de Git dont vous aurez besoin pour débuter avec ce programme de gestion de versions.
- Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
- 1 certificat SSL Wildcard par contrat
- Boîte email de 2 Go
Qu’est-ce que Git ?
Git est un système de gestion de versions partagé qui fut développé en 2005 par le créateur de Linux Linus Thorvalds et publié sous licence libre GNU-GPLv2. Même si chaque projet dispose d’un répertoire central, la particularité de cet outil réside dans le fait que tous les utilisateurs participants téléchargent une copie de travail locale de ce répertoire sur leur appareil. Chacune de ces copies constitue une sauvegarde à part entière du répertoire ce qui implique qu’une connexion permanente au réseau n’est pas nécessaire pour le processus de travail sous-jacent. Par ailleurs, les copies servent de sauvegarde au cas où le répertoire principal tomberait en panne ou serait endommagé. Les modifications effectuées peuvent être partagées à tout moment avec tous les autres participants au réseau et être reprises dans le répertoire si elles sont pertinentes.
L’une des alternatives les plus connues à Git est l’outil Subversion. Contrairement à Git, ce logiciel également libre et mieux connu sous le nom de SVN s’appuie sur un système de gestion centralisé. Dans notre article "Git vs. SVN : comparatif de ces gestionnaires de versions " , vous découvrirez les points communs et les différences entre ces deux outils.
Installer Git sur votre appareil
Si vous souhaitez apprendre la gestion de logiciels avec Git, vous devrez tout d’abord vous familiariser avec le logiciel et son interface utilisateur. Git est disponible sous Windows, Unix/Linux et macOS, les versions étant légèrement différentes en termes d’utilisation. Après l’installation standard correspondante, vous pourrez contrôler cet outil à l’aide de l’invite de commande ou d’une interface graphique utilisateur.
Afin de pouvoir utiliser par la suite les commandes listées dans ce tutoriel Git, les utilisateurs de Windows devront exécuter le système de gestion de versions via Git-Bash, l’émulateur de style Unix fourni à l’installation. Il est également possible de contrôler le logiciel avec l’invite de commande ou via le terminal Windows. La structure des paramètres des commandes y fonctionne toutefois différemment (par ex. avec des chevrons plutôt que des guillemets simples).
Vous trouverez les fichiers d’installation binaires, les notices pour les installations du gestionnaire de paquets (systèmes Unix) ainsi que les éditions portables prêtes à l’emploi pour les différents systèmes sur le site officiel du projet Git. Téléchargez simplement le paquet souhaité ou utilisez le paquet correspondant dans la gestion des paquets puis suivez les instructions de l’assistant d’installation. Dans le cas de l’édition portable, il est bien sûr inutile de procéder à une installation.
Dans la section de téléchargement de git-scm.com, la communauté Git met à votre disposition différentes interfaces graphiques alternatives pour le gestionnaire de versions. Vous y trouverez également des clients Git pour Android et iOS qui vous permettront d’utiliser cet outil open source sur votre appareil mobile.
Tutoriel Git : apprendre à travailler avec Git pas-à-pas
Une fois Git installé sur votre système, vous pouvez utiliser le système de gestion de versions pour gérer vos projets. Comme pour tout autre logiciel, il convient tout d’abord de comprendre les fonctionnalités et les commandes de base afin de pouvoir tirer profit au maximum de l’application. Dans le cadre de notre tutoriel Git complet pour les débutants, nous vous expliquons les principales étapes de mise en place et d’utilisation de Git via l’invite de commande, afin que vous puissiez ensuite créer et gérer votre propre répertoire sans difficulté.
Bien que l’on sache depuis 2015 qu’une mauvaise configuration de Git ou, plus exactement, du serveur Web utilisé, rend les dépôts du système de contrôle de version accessibles au public sur le Web, de nombreux sites Web exposent encore aujourd’hui leurs fichiers. Cela se produit chaque fois qu’un répertoire Git est stocké à la racine du serveur, ce qu’il faut éviter dans tous les cas. Ne stockez jamais vos dépôts Git à la racine du site Web ou bien configurez votre serveur Web de sorte à ce que l’accès au répertoire Git soit impossible pour les personnes extérieures. Sur le site Internetwache.org, vous pouvez trouver un guide détaillé sur la sécurisation du répertoire Git.
Créer et cloner un répertoire Git
Le répertoire Git est le répertoire central de tout projet géré et constitue la zone commune à tous les participants permettant de régler l’intégralité du contrôle des versions. Votre première étape dans Git consistera donc à créer un tel répertoire principal ou à le cloner (sous la forme d’une copie de travail), dans la mesure où vous vous connectez à un projet dont le développement commun est déjà géré à l’aide de Git.
Si vous souhaitez reconfigurer le contrôle de versions ou si vous venez tout juste d’installer cet outil pour apprendre à utiliser Git, vous devrez tout d’abord créer un répertoire. Pour ce faire, allez dans le répertoire local désiré sur votre appareil à l’aide de « cd » (change directory) :
cd chemin de répertoire individuel
- Certificat SSL et protection DDoS
- Sauvegarde et restauration des données
- Assistance 24/7 et conseiller personnel
À cet endroit, saisissez la commande suivante pour créer un répertoire .git :
git init
Si le répertoire Git existe déjà pour votre projet, vous aurez simplement besoin de l’adresse Web ou réseau de ce répertoire pour créer une copie de travail sur votre ordinateur avec la commande « git clone » :
git clone https://one-test.website/git-repository
Vérifier le statut du répertoire et ajouter de nouveaux fichiers à la gestion de versions
Une bonne organisation du répertoire de travail fait partie des bases essentielles de Git. Ce répertoire vous permet non seulement de proposer vos propres modifications et de nouveaux ajouts à un projet qui sont alors repris via commit (« partage »), mais aussi d’acquérir des informations sur les activités d’autres utilisateurs. Vous pouvez vérifier l’actualité de votre copie de travail à l’aide de la commande suivante :
git status
En cas de création d’un nouveau répertoire ou de correspondance absolue du répertoire principale et de la copie de travail, vous êtes généralement informé du fait que le projet ne comporte aucune modification (« No commits yet »). Git vous indique par ailleurs que vous n’avez actuellement partagé aucune modification pour le prochain commit (« nothing to commit »).
Afin d’ajouter un nouveau fichier à la gestion des versions ou de signaler un fichier édité pour le prochain commit, utilisez la commande « git add » sur ce fichier (il doit se trouver dans le répertoire de travail). Dans notre tutoriel Git, nous avons ajouté à titre d’exemple un document texte intitulé « Test » :
git add Test.txt
À présent, si l’on vérifie à nouveau le statut du répertoire, le document servant d’exemple est présenté comme un candidat potentiel pour la prochaine étape de modification officielle du projet (« Changes to be commited ») :
Valider les modifications via commit et les reprendre dans le HEAD
L’ensemble des modifications que vous avez enregistrées pour la gestion des versions (de la façon décrite à la section précédente) doivent toujours être validées par un commit pour être reprises dans le HEAD. Le HEAD est un type d’index qui renvoie au dernier commit ayant pris effet dans l’environnement de travail Git actuel (également appelé « branche »). Pour cette étape, la commande est la suivante :
git commit
Vérifiez toujours avant de saisir la commande si l’ensemble des modifications souhaitées pour le commit sont marquées comme telles (c.-à-d. avec « git add »). Dans le cas contraire, elles seront ignorées même si elles se trouvent dans le répertoire de la copie de travail.
Après l’exécution de la commande, Git lance automatiquement l’éditeur que vous avez enregistré comme choix par défaut lors de l’installation ou que l’outil de gestion de versions prévoit par défaut. Dans le document, vous pouvez à présent saisir un commentaire individuel concernant le commit prévu, sachant que les lignes déjà contenues seront commentées avec un point-virgule et ne seront pas affichées par la suite. Git crée le commit dès que vous fermez l’éditeur :
Comme le montre la capture d’écran, après avoir exécuté la commande « git commit », vous obtenez un message récapitulatif portant sur le commit : dans les crochets précédents, vous trouverez d’une part le nom de la branche (branche du projet ; dans le cas présent « master », puisque notre répertoire de travail est également notre répertoire principal), dans lequel les modifications ont été transposées, ainsi que la somme de contrôle SHA 1 du commit (ici « c0fdc90 »). Ils sont suivis par un commentaire choisi librement (ici « Test ») et par les informations concrètes sur les modifications effectuées.
Éditer ou annuler des commits générés
Si vous avez repris les modifications sous la forme d’un commit, vous pouvez éditer le contenu a posteriori ou le reprendre intégralement. De telles modifications peuvent par exemple s’avérer nécessaires lorsque le commit a été généré trop tôt et que certains fichiers ou certaines modifications essentiels ont été oubliés. Dans un tel cas, il convient de mettre à disposition les fichiers nouveaux ou modifiés a posteriori en utilisant « git add » et de répéter l’enregistrement dans le répertoire principal. Pour ce faire, ajouter l’option --amend à la commande de base :
git commit --amend
Si vous souhaitez en revanche reprendre le dernier commit généré, vous devrez utiliser la commande Git suivante :
git reset --soft HEAD~1
Cette commande permet de reprendre le dernier commit enregistré dans le HEAD. Les fichiers qu’il contient sont ainsi réinitialisés au statut « modifications prévues pour le prochain commit ». Si vous souhaitez en revanche supprimer entièrement les données de travail, utilisez la commande suivante à la place de la commande précédente :
git reset --hard HEAD~1
Afficher l’historique des commits
Les fonctionnalités élémentaires de versionnage sont une bonne raison d’apprendre la gestion de projet avec Git. L’un des gros atouts de ce système open source réside dans le fait qu’il permet d’afficher à tout moment les dernières modifications effectuées dans le répertoire. La commande Git nécessaire pour y parvenir est :
git log
La commande « git log » liste les commits générés par ordre anti chronologique sachant que par défaut, la somme de contrôle SHA 1, l’auteur (le nom et l’adresse email) ainsi que la date du commit concerné sont affichés. Par ailleurs, vous trouverez également le message individuel, une note importante qui vous servira ou qui servira aux utilisateurs à classer rapidement les différentes modifications. Dans notre tutoriel Git, nous avons généré précédemment un commit individuel avec le message « Test » qui nous affiche la commande de la façon désirée lors de l’exécution :
La commande log peut par ailleurs être modifiée à l’aide de différents paramètres. Certaines options utiles sont listées dans le tableau ci-après :
Option pour la commande « git log » | Description |
---|---|
-p | indique également les modifications contenues dans un commit |
-2 | liste uniquement les derniers commits exécutés |
--stat | ajoute à chaque entrée une petite statistique indiquant quels fichiers ont été modifiés et combien de lignes ont été ajoutées ou supprimées |
--pretty | modifie le format de la version pour l’un des différents formats disponibles ; --pretty=oneline est par exemple un format possible qui liste tous les commits dans une même ligne |
--abbrev-commit | affiche uniquement les premiers caractères d’une somme de contrôle SHA 1 |
--relative-date | affiche la date d’une modification dans un format relatif (par ex. « il y a deux semaines ») |
Reprendre des commits dans le répertoire principal
Jusqu’à présent, nous vous avons montré dans ce tutoriel Git comment enregistrer les modifications sous forme de commit dans le HEAD du répertoire local. Toutefois, pour qu’elles soient reprises dans le répertoire principal, il est nécessaire de saisir la commande suivante :
git push origin master
Avec ce code, Git transmet automatiquement tous les commits créés, qui jusqu’à présent se trouvaient uniquement dans la copie de travail, dans le répertoire principal également appelé « master ». Si vous remplacez ce nom dans le code indiqué par une autre branche (branche de projet), les fichiers sont alors directement envoyés à cet endroit.
Balisage : créer, supprimer et lister des balises dans Git
Comme de nombreux autres systèmes de contrôle de versions, Git dispose également d’une fonction de balisage permettant de marquer l’importance de certains points dans l’historique d’un répertoire. Les balises de ce type sont généralement utilisées pour marquer des versions d’un logiciel, par exemple version 1.0, 2.0, etc., pour qu’elles puissent être consultées facilement et à tout moment dans de gros projets. Dans ce cadre, Git supporte deux types de balises :
- les balises annotées (« annotated ») sont enregistrées comme des objets indépendants dans la base de données, avec la somme de contrôle individuelle, le message de balisage, la date, le nom et l’adresse email de l’auteur de la balise ainsi que la signature GNU Privacy Guard facultative (signature GPG).
- les balises non annotées (« lightweight ») fonctionnent exclusivement comme des références à un commit, de façon similaire aux branches. Ce type peut également être utilisé si vous avez uniquement besoin de balises temporaires ou si vous ne souhaitez pas renseigner des informations étendues.
Dans Git, vous pouvez créer des balises annotées en utilisant la commande « git tag -a » sur le commit souhaité. Si vous y ajoutez également le paramètre « -m », vous pouvez formuler le message de balisage désiré – entre guillemets droits – directement dans la ligne de commande. Dans ce tutoriel Git, nous avons généré le commit « Test » que nous avons également associé à une balise avec le message « example tag » :
git tag -a Test -m "example tag"
Si vous n’utilisez pas le paramètre « -m » lors de la création de la balise, Git ouvre automatiquement l’éditeur afin de vous permettre d’y saisir le message de balisage désiré.
Pour les balises non annotées, il convient de procéder de façon similaire : utilisez simplement la commande de base « git tag » sur le commit souhaité sans autre paramètre. Dans l’exemple de notre tutoriel Git, cela correspondrait à la commande suivante :
git tag Test
Dès que les balises pour votre répertoire sont disponibles, vous pouvez les afficher à l’aide de la commande « git tag » que vous connaissez déjà et des paramètres facultatifs « -l » ou « --list » :
git tag
git tag -l
git tag --list
Pour supprimer une balise du répertoire de travail local, utilisez la suite de commandes « git tag -d » sur la balise en question. Pour supprimer notre référence à « Test », il faut donc procéder comme suit :
git tag -d Test
À l’instar des commits, le transfert des balises dans le répertoire principal s’effectue également manuellement. Pour ce faire, vous devrez utiliser le nom de la balise et la commande « git push origin ». À la place du nom de la balise, vous pouvez toutefois également ajouter le paramètre « --tags » qui permet d’enregistrer toutes les balises générées dans le répertoire :
git push origin --tags
Créer, gérer et supprimer des branches
Les branches déjà évoquées dans ce tutoriel Git ne sont en fait rien d’autre que des versions de travail personnelles du répertoire principal, lui-même qualifié de branche portant le nom de « master ». Avec ces branches de travail, Git offre une base idéale pour développer des fonctionnalités de façon isolée et les rassembler uniquement à un moment ultérieur. Cette dernière action est également appelée « fusionner » (en angl. « merge »).
Créer une nouvelle branche n’a rien de compliqué : vous aurez simplement besoin de la commande « git branch » et d’y rattacher le nom de la branche souhaitée. Vous pouvez par exemple créer une branche portant le nom « test_branch » de la manière suivante :
git branch test_branch
Vous pouvez ensuite passer à cette branche à tout moment à l’aide de la commande « git checkout » :
git checkout test_branch
Si vous souhaitez fusionner des branches, vous devrez utiliser la commande « git merge ». À l’aide de « checkout », rendez-vous dans le répertoire devant accueillir une nouvelle branche et exécutez à cet endroit la commande précitée en indiquant le nom de la branche à enregistrer. Notre version de travail « test_branch » peut par exemple être fusionnée avec le répertoire principal de la façon suivante :
git checkout master
git merge test_branch
Si vous avez fusionné des branches de travail et que vous n’avez plus besoin d’une branche particulière, vous pouvez la supprimer en toute simplicité. Pour ce faire, utilisez la suite de commandes « git branch -d » sur la branche de la version qui n’est plus nécessaire. L’exemple de notre tutoriel Git « test_branch » peut être supprimé en saisissant ce qui suit :
git branch -d test_branch
Le seul prérequis pour procéder à la suppression est de se trouver dans une autre branche. Par conséquent, avant d’exécuter la commande, nous sommes repassés dans le répertoire principal comme le montre la capture d’écran suivante :
Dans notre Digital Guide, vous trouverez plus d'informations sur « Git Branch rename : comment changer le nom d’une branche locale ».
Grâce à un crédit de départ, vous pouvez tester gratuitement le serveur Cloud de IONOS pendant 1 mois (ou jusqu’à épuisement du crédit) et découvrir la combinaison parfaite entre performance et sécurité !