Git : Qu'est-ce que c'est ?

Qu'est-ce que la gestion de version ?
Avant de parler de git, il faut d'abord savoir ce qu'est la gestion de version.
La gestion de version ou VCS (Version Control System) permet de gérer et de suivre des modifications apportées aux codes ou à un ensemble de fichiers au fil du temps tout en ayant la possibilité de revenir à des versions antérieures du fichier. La gestion de version est utilisée pour des projets de développement logiciel, des fichiers de configuration, ou même des documents textuels collaboratifs.
Sans les logiciels de gestion de version dans des projets de grande envergure, vous seriez obligé de transférer les fichiers manuellement après chaque modification importante aux autres collaborateurs. Grâce au gestionnaire de version, vous pouvez facilement ramener un fichier à son état précédent, visualiser en détails tous les changements au fil du temps ainsi que voir si tel contributeur a fait tel changement dans un fichier, ce qui pourrait éventuellement causer des problèmes.
Gestion de version centralisée
Les systèmes de gestion de version centralisée ou CVCS (Centralized Version Control Systems) reposent sur un unique serveur central où sont stockés les différents fichiers du projet afin que les clients, développeurs ou collaborateurs puissent les extraire depuis ce même serveur. Le problème de ce système étant qu'il repose sur un serveur, et dès lors que ce serveur a un quelconque problème comme une coupure, ou un problème de sauvegarde, les personnes ne peuvent plus y accéder, voire pire, les données des dernières ou de toutes les versions des fichiers d'un projet peuvent être perdues.
Gestion de version distribuée
Les systèmes de gestion de version distribuée ou DCVS (Distributed Version Control Systems) reposent sur un serveur où les clients peuvent non seulement extraire la dernière version, mais également faire une duplication complète du dépôt. En effet, si le serveur n'a pas eu sa dernière sauvegarde, il sera toujours possible d'envoyer le dépôt d'une machine locale au serveur afin de pouvoir le restaurer.
Qu'est ce que Git ?
Git est un logiciel de gestionnaire de version décentralisé ou plus communément appelée gestion de version, initialement développé par Linus Torvalds (également le créateur du noyau Linux) en 2005 et a été spécialement développé et optimisé pour le noyau Linux. Il permet à chaque développeur de travailler sur une copie complète du projet sur leur machine, comprenant l'historique des modifications. Cela signifie que les collaborateurs peuvent revenir à des versions antérieures du code, fusionner des modifications et collaborer efficacement avec d'autres développeurs issus du projet.
Git décentralisé
Git fonctionne avec 2 niveaux de dépôts, on retrouve le dépôt dit "remote" donc distant, et le dépôt dit "local" comme le nom l'indique qui se situe en local.
Remote
Le dépôt distant est une version centralisée d'un projet, qui est hébergé sur un serveur tel que GitHub, Gitea ou encore GitLab pour les plus connus. C'est ici que tous les collaborateurs peuvent récupérer en faisant un "pull" (tirer) ou envoyer avec un "push" (pousser) les modifications de leurs projets.
Local
Le dépôt local est la version décentralisée du projet, qui se situe au niveau de la machine locale d'un développeur ou d'un collaborateur. Dès lors que la personne clone un dépôt distant, elle va disposer d'une copie exacte et complète de celui-ci sur sa machine locale.
Les notions
Les branches
Les branches permettent de gérer plusieurs versions existantes en simultané, c'est-à-dire qu'en plus d'avoir la branche principale "Master" ou "Main", vous pouvez avoir d'autres branches en parallèle ce qui peut permettre de travailler sur des fonctionnalités ou des corrections de bogues sans pour autant affecter le code principal d'un projet.
Principalement lors de petits projets personnels non collaboratif, vous serez plus à même de travailler uniquement sur la branche "Master", et en revanche sur des projets de grande envergure collaboratifs, travailler à même de cette branche sera déconseillé et considéré comme une mauvaise pratique.
Les fichiers
Dans Git, chaque fichier dans le dépôt local peut se trouver dans l’un des trois états suivants : modifié (modified), indexé (stagged) pour la préparation à la validation, et validé (commited) une fois le snapshot créé.
Modifier
Dès qu'un fichier est modifié, les modifications existent uniquement dans le répertoire de travail, cela veut dire que git reconnaît qu'un fichier a été modifié par rapport à sa dernière version validée mais qu'il n'est pas encore considéré comme étant validé ou étant dans l'état de l'historique de git.
Indexé
Suite à la modification d'un ou de plusieurs fichiers, ceux-ci peuvent être placés dans l'état indexé. Lorsque ces fichiers sont indexés, ils peuvent être prêts à être validés, sans toutefois être dans l'historique de git. Dans cette zone sont donc regroupés tous les fichiers que vous avez auparavant modifiés. Une fois que vous êtes prêt, vous pouvez les indexer en exécutant la commande : git add <nom de votre fichier>
, ou git add .
pour indexer tous les fichiers modifiés.
Validé
Une fois les fichiers indexés, les fichiers pourront être mis en état de validation dès lors que vous le souhaitez en décrivant un message indiquant les modifications apportées en exécutant cette commande git commit -m "nom du commentaire"
. Lorsque vous exécutez cette commande, Git fait un enregistrement actuel des fichiers indexés dans le dépôt sous la forme d'un instantané (snapshot). Une fois validé, cet état est permanent dans l’historique du dépôt local et peut être par la suite partagé sur le serveur en exécutant la commande git push
.
Installer Git
Git pour Windows
Git n’est pas encore une option par défaut sur les ordinateurs. Pour installer Git sur Windows, il vous suffit d'aller sur le site officiel de Git et de télécharger la version sous Windows, puis d'exécuter Git.

Une fois exécuté, appuyez sur "Suivant" à chaque fenêtre puis sur "Installer". Lors de l'installation, vous pouvez laisser toutes les options par défaut

Par la suite, cochez "Launch Git Bash".

Git Bash se lance sur un CLI (Command-Line Interface).

Git pour Linux
Git n’est pas encore une option par défaut aussi sur Linux.
Pour installer git sur Linux, par exemple, sur la distribution Debian, il faut installer le paquet git-core avec cette commande sudo apt install git-core -y
.
Les commandes Git
Configuration initiale de Git
Avant de pouvoir utiliser pleinement de Git, il va d'abord falloir le configurer correctement. Commencer par exécuter ces deux commandes en renseignant votre nom et votre email.
git config --global user.name "Votre nom"
git config --global user.email "[email protected]"
Elles permettront de configurer les informations d'utilisateur qui apparaîtront dans chaque commit.
Quelques commandes de base
git init
: Permet de créer un nouveau dépôt local
git clone
: Permet de créer une copie locale d'un dépôt distant
git add
: Permet d'ajouter le contenu du fichier à l'index
git add .
: Permet d'ajouter tous les contenus des fichiers à l'index
git commit
: permet d'enregistrer les modifications apportées au dépôt
git commit -m "nom du message"
: Permet de créer un commit avec tous les fichiers modifiés et un message de commit spécifique
git push
: Permet d'envoyer les modifications locales vers le référentiel distant Git
git pull
: Permet de récupérer et fusionner les modifications distantes vers le dépôt locale
git branch
: Permet de lister les branches
git merge
: Permet de fusionner des branches ensemble
git status
: Liste tous les nouveaux fichiers et les fichiers modifiés à commiter
Exemple de mise en pratique
Utilisation locale
Initialisation du dépôt
Créez un dépôt Git pour votre projet :
git init Projet1
Accédez au répertoire du projet :
cd Projet1
Vérification de l'état du dépôt
Pour voir l’état actuel du dépôt, exécutez :
git status
Création et ajout d'un fichier
Créez un fichier Fichier1
avec du contenu :
echo 'Voici le Fichier1' > Fichier1
Vérifiez à nouveau l'état :
git status
Ajoutez Fichier1
au dépôt pour le préparer à être validé :
git add Fichier1
Vérifiez de nouveau l'état pour voir Fichier1
dans la zone de staging :
git status
Validation des modifications
Créez un commit pour enregistrer les modifications, puis vérifiez l'état après commit :
git commit -m "Premier fichier : Fichier1"
git status
Visualisation de l'historique et des modifications
Affichez l'historique des commits, puis affichez les détails du dernier commit pour voir les modifications :
git log
git show
Création d'un tag
Ajoutez un tag pour marquer la version actuelle, puis vérifiez que le tag a bien été ajouté :
git tag v0.1
git tag
Création et modification de fichiers supplémentaires
Créez un nouveau fichier Fichier2
contenant la date actuelle :
date > Fichier2
Modifiez le fichier Fichier1
:
echo '---' >> Fichier1
Vérifiez l'état du dépôt pour voir les nouvelles modifications :
git status
Ajout, validation, marquage et examen des modifications
Ajoutez le fichier Fichier2
au dépôt pour le préparer à être validé :
git add Fichier2
Ensuite, il faut également ajouter manuellement le Fichier1
avec un git add Fichier1
qu'on a précédemment modifié, mais il est également possible d'ajouter tous les fichiers d'un coup avec un git add .
ou git add *
, ce qui permettra d'indexer tous les fichiers qui ont été modifiés ou créés.
Validez toutes les modifications (y compris celles de Fichier1
et Fichier2
) en créant un nouveau commit :
git commit -m "Ajout de Fichier2 et modifications de Fichier1"
Tagguez la nouvelle version pour marquer cet état du projet :
git tag v0.2
Examinez l’historique des commits pour voir les étapes précédentes :
git log
Examinez les changements spécifiques apportés aux fichiers pour le dernier commit :
git show
Comment envoyer un dépôt local sur un dépôt en ligne ?
Après avoir créé votre dépôt local avec Git et que vous n'avez pas encore créé votre dépôt en ligne tel que sur GitHub, il n'est pas trop tard.
Créer le dépôt en ligne
Commencer par créer un dépôt en ligne, par exemple avec GitHub, mais avec d'autres comme Gitlab ou Gitea sont tout aussi possibles.
Pour ce faire, allez sur GitHub ou sur votre plateforme que vous voulez utiliser, et créez un nouveau dépôt. Une fois votre dépôt créé, rendez-vous sur votre interface de ligne de commande de Git.
De préférence ne créez pas en amont un README.md, vous pourrez toujours le créer après.

Lier le dépôt local au dépôt distant
Une fois sur votre interface Git, déplacez-vous dans votre dossier que vous souhaitez lier a votre dépôt distant.
Puis ajouter le dépôt en ligne comme dépôt distant avec :
git remote add origin https://github.com/votre_nom_utilisateur/Project1.git
Puis on peut vérifier si le dépôt en ligne a bien été ajouté avec :
git remote -v
Vous pouvez également vérifier directement sur votre dépôt en ligne si tout a bien été ajouté.
Pousser le dépôt local vers le dépôt distant
Dans le cas où vous avez déjà des des commits dans votre dépôt local, vous pouvez les pousser vers votre dépôt distant avec :
git push -u origin master
Ou si votre branche ne se nomme pas master
, mais par exemple main
, vous avez juste à modifier master
par main
ou pas le nom de votre propre branche :
git push -u origin main
Utilisation avec accès dépôt distant
Par exemple, en utilisant un dépôt déjà existant sur GitHub.
Initialisation du dépôt
Pour ajouter un dépôt distant, par exemple celui d'un dépôt provenant de GitHub, faites un git clone avec l'URL du dépôt que vous voulez clonez, voici un exemple :
git clone https://github.com/CamilleDupont/ProjetGit.git
Par la suite, accédez au dépôt cloné :
cd ProjetGit
Vérification de l'état du dépôt
Pour voir l’état actuel du dépôt, exécuter :
git status
Création, ajout et validation d'un nouveau fichier
Créez un fichier contenant la date actuelle :
date > fichier_date
Ajoutez le fichier ficher_date
au dépôt pour le préparer à être validé :
git add ficher_date
Puis validez-le en créant un nouveau commit avec un commentaire :
git commit -am "ajout du fichier fichier_date"
Tagguez la nouvelle version pour marquer cet état du projet :
git tag v0.1
Envoyez les changements et le tag créé au dépôt distant :
git push
git push --tag
Conclusion
Pour résumer, Git va vous permettre d'améliorer la collaboration de groupe sur un ou plusieurs projets, grâce au fait que vous pourrez travailler simultanément sans pour autant écraser le travail des autres collaborateurs. Cela pourra également vous permettre de mieux suivre les différentes modifications et mises à jour apportées à votre projet.
Pour nous aider à nous améliorer, n'hésitez pas à faire part de vos avis en commentaires ou même à poser vos questions si vous avez besoin d'aide supplémentaire.
Vous pouvez également partager cet article et nous suivre sur Twitter/X :
ainsi que sur Instagram :
