Dé­ve­lop­per des projets logiciels en commun n’est pas une activité propre aux en­tre­prises : dans le secteur open source, plusieurs centaines voire, pour certains projets, plusieurs milliers de vo­lon­taires et bénévoles con­tri­buent à la main­te­nance, à l’op­ti­mi­sa­tion, au dé­ve­lop­pe­ment continu ou à la mo­di­fi­ca­tion d’un programme. Sans un système adapté per­met­tant aux dif­fé­rents dé­ve­lop­peurs d’en­re­gis­trer et de contrôler les nom­breuses mo­di­fi­ca­tions, les projets de ce type seraient dif­fi­ciles à mettre en œuvre.

L’une des solutions les plus ap­pré­ciées pour gérer les versions est le logiciel libre Git, qui est facile à prendre en main et en­tiè­re­ment gratuit. Dans ce tutoriel, nous vous en­seig­nons toutes les bases es­sen­tielles de Git dont vous aurez besoin pour débuter avec ce programme de gestion de versions.

Nom de domaine
Votre domaine en un clic
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée

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é­per­toire central, la par­ti­cu­la­rité de cet outil réside dans le fait que tous les uti­li­sa­teurs par­ti­ci­pants té­lé­char­gent une copie de travail locale de ce ré­per­toire sur leur appareil. Chacune de ces copies constitue une sau­ve­garde à part entière du ré­per­toire ce qui implique qu’une connexion per­ma­nente au réseau n’est pas né­ces­saire pour le processus de travail sous-jacent. Par ailleurs, les copies servent de sau­ve­garde au cas où le ré­per­toire principal tomberait en panne ou serait endommagé. Les mo­di­fi­ca­tions ef­fec­tuées peuvent être partagées à tout moment avec tous les autres par­ti­ci­pants au réseau et être reprises dans le ré­per­toire si elles sont per­ti­nentes.

Conseil

L’une des al­ter­na­tives les plus connues à Git est l’outil Sub­ver­sion. Con­trai­re­ment à Git, ce logiciel également libre et mieux connu sous le nom de SVN s’appuie sur un système de gestion cen­tra­lisé. Dans notre article "Git vs. SVN : com­pa­ra­tif de ces ges­tion­naires de versions " , vous dé­cou­vri­rez les points communs et les dif­fé­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 fa­mi­lia­ri­ser avec le logiciel et son interface uti­li­sa­teur. Git est dis­po­nible sous Windows, Unix/Linux et macOS, les versions étant lé­gè­re­ment dif­fé­rentes en termes d’uti­li­sa­tion. Après l’ins­tal­la­tion standard cor­res­pon­dante, vous pourrez contrôler cet outil à l’aide de l’invite de commande ou d’une interface graphique uti­li­sa­teur.

Note

Afin de pouvoir utiliser par la suite les commandes listées dans ce tutoriel Git, les uti­li­sa­teurs de Windows devront exécuter le système de gestion de versions via Git-Bash, l’émulateur de style Unix fourni à l’ins­tal­la­tion. Il est également possible de contrôler le logiciel avec l’invite de commande ou via le terminal Windows. La structure des pa­ra­mètres des commandes y fonc­tionne toutefois dif­fé­rem­ment (par ex. avec des chevrons plutôt que des guil­le­mets simples).

Vous trouverez les fichiers d’ins­tal­la­tion binaires, les notices pour les ins­tal­la­tions du ges­tion­naire de paquets (systèmes Unix) ainsi que les éditions portables prêtes à l’emploi pour les dif­fé­rents systèmes sur le site officiel du projet Git. Té­lé­char­gez sim­ple­ment le paquet souhaité ou utilisez le paquet cor­res­pon­dant dans la gestion des paquets puis suivez les ins­truc­tions de l’assistant d’ins­tal­la­tion. Dans le cas de l’édition portable, il est bien sûr inutile de procéder à une ins­tal­la­tion.

Conseil

Dans la section de té­lé­char­ge­ment de git-scm.com, la com­mu­nauté Git met à votre dis­po­si­tion dif­fé­rentes in­ter­faces gra­phiques al­ter­na­tives pour le ges­tion­naire de versions. Vous y trouverez également des clients Git pour Android et iOS qui vous per­met­tront d’utiliser cet outil open source sur votre appareil mobile.

Tutoriel Git : apprendre à tra­vail­ler 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 com­prendre les fonc­tion­na­li­tés et les commandes de base afin de pouvoir tirer profit au maximum de l’ap­pli­ca­tion. Dans le cadre de notre tutoriel Git complet pour les débutants, nous vous ex­pli­quons les prin­ci­pales étapes de mise en place et d’uti­li­sa­tion de Git via l’invite de commande, afin que vous puissiez ensuite créer et gérer votre propre ré­per­toire sans dif­fi­culté.

Note

Bien que l’on sache depuis 2015 qu’une mauvaise con­fi­gu­ra­tion de Git ou, plus exac­te­ment, du serveur Web utilisé, rend les dépôts du système de contrôle de version ac­ces­sibles au public sur le Web, de nombreux sites Web exposent encore aujourd’hui leurs fichiers. Cela se produit chaque fois qu’un ré­per­toire 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 con­fi­gu­rez votre serveur Web de sorte à ce que l’accès au ré­per­toire Git soit im­pos­sible pour les personnes ex­té­rieures. Sur le site In­ter­net­wache.org, vous pouvez trouver un guide détaillé sur la sé­cu­ri­sa­tion du ré­per­toire Git.

Créer et cloner un ré­per­toire Git

Le ré­per­toire Git est le ré­per­toire central de tout projet géré et constitue la zone commune à tous les par­ti­ci­pants per­met­tant de régler l’in­té­gra­lité du contrôle des versions. Votre première étape dans Git con­sis­tera donc à créer un tel ré­per­toire principal ou à le cloner (sous la forme d’une copie de travail), dans la mesure où vous vous connectez à un projet dont le dé­ve­lop­pe­ment commun est déjà géré à l’aide de Git.

Si vous souhaitez re­con­fi­gu­rer 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é­per­toire. Pour ce faire, allez dans le ré­per­toire local désiré sur votre appareil à l’aide de « cd » (change directory) :

cd chemin de répertoire individuel
Hé­ber­ge­ment Web
Hé­ber­ge­ment Web de pointe au meilleur prix
  • 3x plus rapide, 60 % d'éco­no­mie
  • Haute dis­po­ni­bi­lité >99,99 %
  • Seulement chez IONOS : jusqu'à 500 Go inclus

À cet endroit, saisissez la commande suivante pour créer un ré­per­toire .git :

git init

Si le ré­per­toire Git existe déjà pour votre projet, vous aurez sim­ple­ment besoin de l’adresse Web ou réseau de ce ré­per­toire pour créer une copie de travail sur votre or­di­na­teur avec la commande « git clone » :

git clone https://one-test.website/git-repository
Note

Git supporte dif­fé­rents pro­to­coles de transfert. Au lieu de HTTPS utilisé dans l’exemple, vous pouvez notamment utiliser SSH afin d’accéder à un ré­per­toire, à condition que vous disposiez de l’au­to­ri­sa­tion cor­res­pon­dante.

Vérifier le statut du ré­per­toire et ajouter de nouveaux fichiers à la gestion de versions

Une bonne or­ga­ni­sa­tion du ré­per­toire de travail fait partie des bases es­sen­tielles de Git. Ce ré­per­toire vous permet non seulement de proposer vos propres mo­di­fi­ca­tions et de nouveaux ajouts à un projet qui sont alors repris via commit (« partage »), mais aussi d’acquérir des in­for­ma­tions sur les activités d’autres uti­li­sa­teurs. 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é­per­toire ou de cor­res­pon­dance absolue du ré­per­toire prin­ci­pale et de la copie de travail, vous êtes gé­né­ra­le­ment informé du fait que le projet ne comporte aucune mo­di­fi­ca­tion (« No commits yet »). Git vous indique par ailleurs que vous n’avez ac­tuel­le­ment partagé aucune mo­di­fi­ca­tion 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é­per­toire 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é­per­toire, le document servant d’exemple est présenté comme un candidat potentiel pour la prochaine étape de mo­di­fi­ca­tion of­fi­cielle du projet (« Changes to be commited ») :

Valider les mo­di­fi­ca­tions via commit et les reprendre dans le HEAD

L’ensemble des mo­di­fi­ca­tions que vous avez en­re­gis­tré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’en­vi­ron­ne­ment de travail Git actuel (également appelé « branche »). Pour cette étape, la commande est la suivante :

git commit
Note

Vérifiez toujours avant de saisir la commande si l’ensemble des mo­di­fi­ca­tions sou­hai­té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é­per­toire de la copie de travail.

Après l’exécution de la commande, Git lance au­to­ma­ti­que­ment l’éditeur que vous avez en­re­gis­tré comme choix par défaut lors de l’ins­tal­la­tion ou que l’outil de gestion de versions prévoit par défaut. Dans le document, vous pouvez à présent saisir un com­men­taire in­di­vi­duel con­cer­nant le commit prévu, sachant que les lignes déjà contenues seront com­men­té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é­ca­pi­tu­la­tif 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é­per­toire de travail est également notre ré­per­toire principal), dans lequel les mo­di­fi­ca­tions ont été trans­po­sées, ainsi que la somme de contrôle SHA 1 du commit (ici « c0fdc90 »). Ils sont suivis par un com­men­taire choisi librement (ici « Test ») et par les in­for­ma­tions concrètes sur les mo­di­fi­ca­tions ef­fec­tuées.

Éditer ou annuler des commits générés

Si vous avez repris les mo­di­fi­ca­tions sous la forme d’un commit, vous pouvez éditer le contenu a pos­te­riori ou le reprendre in­té­gra­le­ment. De telles mo­di­fi­ca­tions peuvent par exemple s’avérer né­ces­saires lorsque le commit a été généré trop tôt et que certains fichiers ou certaines mo­di­fi­ca­tions es­sen­tiels ont été oubliés. Dans un tel cas, il convient de mettre à dis­po­si­tion les fichiers nouveaux ou modifiés a pos­te­riori en utilisant « git add » et de répéter l’en­re­gis­tre­ment dans le ré­per­toire 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 en­re­gis­tré dans le HEAD. Les fichiers qu’il contient sont ainsi réi­ni­tia­li­sés au statut « mo­di­fi­ca­tions prévues pour le prochain commit ». Si vous souhaitez en revanche supprimer en­tiè­re­ment les données de travail, utilisez la commande suivante à la place de la commande pré­cé­dente :

git reset --hard HEAD~1

Afficher l’his­to­rique des commits

Les fonc­tion­na­li­tés élé­men­taires de ver­sion­nage 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 mo­di­fi­ca­tions ef­fec­tuées dans le ré­per­toire. La commande Git né­ces­saire pour y parvenir est :

git log

La commande « git log » liste les commits générés par ordre anti chro­no­lo­gique 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 in­di­vi­duel, une note im­por­tante qui vous servira ou qui servira aux uti­li­sa­teurs à classer ra­pi­de­ment les dif­fé­rentes mo­di­fi­ca­tions. Dans notre tutoriel Git, nous avons généré pré­cé­dem­ment un commit in­di­vi­duel 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 dif­fé­rents pa­ra­mètres. Certaines options utiles sont listées dans le tableau ci-après :

Option pour la commande « git log » Des­crip­tion
-p indique également les mo­di­fi­ca­tions contenues dans un commit
-2 liste uni­que­ment les derniers commits exécutés
--stat ajoute à chaque entrée une petite sta­tis­tique indiquant quels fichiers ont été modifiés et combien de lignes ont été ajoutées ou sup­pri­mées
--pretty modifie le format de la version pour l’un des dif­fé­rents formats dis­po­nibles ; --pretty=oneline est par exemple un format possible qui liste tous les commits dans une même ligne
--abbrev-commit affiche uni­que­ment les premiers ca­rac­tères d’une somme de contrôle SHA 1
--relative-date affiche la date d’une mo­di­fi­ca­tion dans un format relatif (par ex. « il y a deux semaines »)

Reprendre des commits dans le ré­per­toire principal

Jusqu’à présent, nous vous avons montré dans ce tutoriel Git comment en­re­gis­trer les mo­di­fi­ca­tions sous forme de commit dans le HEAD du ré­per­toire local. Toutefois, pour qu’elles soient reprises dans le ré­per­toire principal, il est né­ces­saire de saisir la commande suivante :

git push origin master

Avec ce code, Git transmet au­to­ma­ti­que­ment tous les commits créés, qui jusqu’à présent se trou­vaient uni­que­ment dans la copie de travail, dans le ré­per­toire principal également appelé « master ». Si vous remplacez ce nom dans le code indiqué par une autre branche (branche de projet), les fichiers sont alors di­rec­te­ment 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 per­met­tant de marquer l’im­por­tance de certains points dans l’his­to­rique d’un ré­per­toire. Les balises de ce type sont gé­né­ra­le­ment utilisées pour marquer des versions d’un logiciel, par exemple version 1.0, 2.0, etc., pour qu’elles puissent être con­sul­tées fa­ci­le­ment et à tout moment dans de gros projets. Dans ce cadre, Git supporte deux types de balises :

  • les balises annotées (« annotated ») sont en­re­gis­trées comme des objets in­dé­pen­dants dans la base de données, avec la somme de contrôle in­di­vi­duelle, 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 fa­cul­ta­tive (signature GPG).
  • les balises non annotées (« light­weight ») fonc­tion­nent ex­clu­si­ve­ment comme des ré­fé­rences à un commit, de façon similaire aux branches. Ce type peut également être utilisé si vous avez uni­que­ment besoin de balises tem­po­raires ou si vous ne souhaitez pas ren­seig­ner des in­for­ma­tions é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 guil­le­mets droits – di­rec­te­ment 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"
Note

Si vous n’utilisez pas le paramètre « -m » lors de la création de la balise, Git ouvre au­to­ma­ti­que­ment 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 sim­ple­ment la commande de base « git tag » sur le commit souhaité sans autre paramètre. Dans l’exemple de notre tutoriel Git, cela cor­res­pon­drait à la commande suivante :

git tag Test

Dès que les balises pour votre ré­per­toire sont dis­po­nibles, vous pouvez les afficher à l’aide de la commande « git tag » que vous con­nais­sez déjà et des pa­ra­mètres fa­cul­ta­tifs « -l » ou « --list » :

git tag
git tag -l
git tag --list

Pour supprimer une balise du ré­per­toire 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é­per­toire principal s’effectue également ma­nuel­le­ment. 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’en­re­gis­trer toutes les balises générées dans le ré­per­toire :

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 per­son­nelles du ré­per­toire 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é­ve­lop­per des fonc­tion­na­li­tés de façon isolée et les ras­sem­bler uni­que­ment à 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 sim­ple­ment 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é­per­toire devant ac­cueil­lir une nouvelle branche et exécutez à cet endroit la commande précitée en indiquant le nom de la branche à en­re­gis­trer. Notre version de travail « test_branch » peut par exemple être fusionnée avec le ré­per­toire 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 par­ti­cu­lière, vous pouvez la supprimer en toute sim­pli­cité. Pour ce faire, utilisez la suite de commandes « git branch -d » sur la branche de la version qui n’est plus né­ces­saire. L’exemple de notre tutoriel Git « test_branch » peut être supprimé en sai­sis­sant ce qui suit :

git branch -d test_branch

Le seul prérequis pour procéder à la sup­pres­sion est de se trouver dans une autre branche. Par con­sé­quent, avant d’exécuter la commande, nous sommes repassés dans le ré­per­toire principal comme le montre la capture d’écran suivante :

Conseil

Dans notre Digital Guide, vous trouverez plus d'in­for­ma­tions sur « Git Branch rename : comment changer le nom d’une branche locale ».

Free Cloud Server Trial
Serveurs Virtuels Privés de niveau en­tre­prise
  • Serveurs pour les dé­ve­lop­peurs basés sur KVM
  • Évo­lu­ti­vité flexible, jusqu'au Cloud d'en­tre­prise
  • Pay-as-you-go : fac­tu­ra­tion à la minute, selon l'uti­li­sa­tion
Aller au menu principal