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

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.

Git - Downloading Package

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 :

x.com

ainsi que sur Instagram :

Makeinlab (@ma.in.lab) • Instagram photos and videos
6 Followers, 5 Following, 12 Posts - See Instagram photos and videos from Makeinlab (@ma.in.lab)

Lire plus