Recherche de site Web

Comment utiliser le système de contrôle de version Git sous Linux [Guide complet]


Le Contrôle de version (contrôle de révision ou contrôle de source) est un moyen d'enregistrer les modifications apportées à un fichier ou à un ensemble de fichiers au fil du temps afin que vous puissiez rappeler des versions spécifiques ultérieurement. Un système de contrôle de version (ou VCS en abrégé) est un outil qui enregistre les modifications apportées aux fichiers sur un système de fichiers.

Il existe de nombreux systèmes de contrôle de versions, mais Git est actuellement le plus populaire et le plus fréquemment utilisé, notamment pour la gestion du code source. Le contrôle de version peut en fait être utilisé pour presque tous les types de fichiers sur un ordinateur, pas seulement pour le code source.

Les systèmes/outils de contrôle de version offrent plusieurs fonctionnalités qui permettent à des individus ou à un groupe de personnes de :

  • créer des versions d'un projet.
  • suivre les changements avec précision et résoudre les conflits.
  • fusionner les modifications dans une version commune.
  • restaurer et annuler les modifications apportées aux fichiers sélectionnés ou à un projet entier.
  • accéder aux versions historiques d’un projet pour comparer les changements au fil du temps.
  • voir qui a modifié en dernier quelque chose qui pourrait causer un problème.
  • créer une sauvegarde hors site sécurisée d'un projet.
  • utilisez plusieurs machines pour travailler sur un seul projet et bien plus encore.

Un projet sous un système de contrôle de version tel que Git comportera principalement trois sections, à savoir :

  • un référentiel : une base de données pour enregistrer l'état ou les modifications apportées aux fichiers de votre projet. Il contient toutes les métadonnées et objets Git nécessaires au nouveau projet. Notez que c'est normalement ce qui est copié lorsque vous clonez un référentiel depuis un autre ordinateur sur un réseau ou un serveur distant.
  • un répertoire ou une zone de travail : stocke une copie des fichiers du projet sur lesquels vous pouvez travailler (effectuer des ajouts, des suppressions et d'autres actions de modification).
  • une zone de préparation : un fichier (appelé index sous Git) dans le répertoire Git, qui stocke des informations sur les modifications, que vous êtes prêt à valider (enregistrer l'état d'un fichier ou d'un ensemble de fichiers) dans le référentiel.

Il existe deux principaux types de VCS, la principale différence étant le nombre de référentiels :

  • Systèmes de contrôle de version centralisés (CVCS) : ici, chaque membre de l'équipe de projet obtient son propre répertoire de travail local, mais il valide les modifications dans un seul référentiel central.
  • Systèmes de contrôle de version distribués (DVCS) : dans ce cadre, chaque membre de l'équipe de projet obtient son propre répertoire de travail local et son propre répertoire Git dans lequel il peut effectuer des validations. Une fois qu'un individu a effectué une validation localement, les autres membres de l'équipe ne peuvent pas accéder aux modifications tant qu'il ne les a pas transmises au référentiel central. Git est un exemple de DVCS.

De plus, un dépôt Git peut être nu (un dépôt qui n'a pas de répertoire de travail) ou non nu (un dépôt avec un répertoire de travail annuaire). Les référentiels partagés (ou publics ou centraux) doivent toujours être nus : tous les référentiels Github sont nus.

Apprenez le contrôle de version avec Git

Git est un système de contrôle de version gratuit et open source, rapide, puissant, distribué, facile à utiliser et populaire, très efficace pour les grands projets et doté d'un système de branchement et de fusion remarquable. Il est conçu pour gérer les données davantage comme une série d'instantanés d'un mini système de fichiers, stocké dans un répertoire Git.

Le flux de travail sous Git est très simple : vous apportez des modifications aux fichiers de votre répertoire de travail, puis ajoutez sélectivement uniquement les fichiers qui ont changé, à la zone de préparation, pour faire partie de votre prochain commit.

Une fois que vous êtes prêt, vous effectuez une validation, qui prend les fichiers de la zone de transit et enregistre cet instantané de manière permanente dans le répertoire Git.

Pour installer Git sous Linux, utilisez la commande appropriée à la distribution de votre choix :

sudo apt install git   [On Debian/Ubuntu]
sudo yum install git   [On CentOS/RHEL]

Après avoir installé Git, il est recommandé d'indiquer à Git qui vous êtes en fournissant votre nom complet et votre adresse e-mail, comme suit :

git config --global user.name “Aaron Kili”
git config --global user.email “[email ”

Pour vérifier vos paramètres Git, utilisez la commande suivante.

git config --list 

Crée un nouveau référentiel Git

Les référentiels partagés ou les workflows centralisés sont très courants et c'est ce que nous allons démontrer ici. Par exemple, nous supposons que vous avez été chargé de configurer un référentiel central à distance pour les administrateurs système/programmeurs de différents départements de votre organisation, afin de travailler sur un projet appelé bashscripts, qui sera stocké sous /projects/scripts/ sur le serveur.

SSH sur le serveur distant et créez le répertoire nécessaire, créez un groupe appelé sysadmins (ajoutez tous les membres de l'équipe de projet à ce groupe, par exemple l'administrateur utilisateur) et définissez les autorisations appropriées sur ce répertoire.

mkdir-p /projects/scripts/
groupadd sysadmins
usermod -aG sysadmins admin
chown :sysadmins -R /projects/scripts/
chmod 770 -R /projects/scripts/

Initialisez ensuite un référentiel de projet nu.

git init --bare /projects/scripts/bashscripts

À ce stade, vous avez initialisé avec succès un répertoire Git nu qui constitue l'installation de stockage centrale du projet. Essayez de faire une liste du répertoire pour voir tous les fichiers et répertoires qu'il contient :

ls -la /projects/scripts/bashscripts/

Cloner un référentiel Git

Clonez maintenant le référentiel Git partagé distant sur votre ordinateur local via SSH (vous pouvez également cloner via HTTP/HTTPS si vous avez un serveur Web installé et configuré de manière appropriée, comme c'est le cas pour cas avec la plupart des dépôts publics sur Github), par exemple :

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts 

Pour le cloner dans un répertoire spécifique (~/bin/bashscripts), utilisez la commande ci-dessous.

git clone ssh://admin@remote_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts

Vous disposez maintenant d'une instance locale du projet dans un dépôt non nu (avec un répertoire de travail), vous pouvez créer la structure initiale du projet (c'est-à-dire ajouter un README.md, sous-répertoires pour différentes catégories de scripts, par exemple recon pour stocker les scripts de reconnaissance, sysadmin pour stocker les scripts sysadmin, etc.) :

cd ~/bin/bashscripts/
ls -la

Vérifier un résumé de l'état de Git

Pour afficher l'état de votre répertoire de travail, utilisez la commande status qui vous montrera toutes les modifications que vous avez apportées ; quels fichiers ne sont pas suivis par Git ; ces changements qui ont été organisés et ainsi de suite.

git status 

Modifications et validation de l'étape Git

Ensuite, effectuez toutes les modifications à l'aide de la commande add avec le commutateur -A et effectuez la validation initiale. L'indicateur -a demande à la commande de transférer automatiquement les fichiers qui ont été modifiés, et -m est utilisé pour spécifier un message de validation :

git add -A
git commit -a -m "Initial Commit"

Publier des validations locales dans le référentiel Git distant

En tant que responsable de l'équipe du projet, maintenant que vous avez créé la structure du projet, vous pouvez publier les modifications dans le référentiel central à l'aide de la commande push, comme indiqué.

git push origin master

À l'heure actuelle, votre référentiel git local doit être à jour avec le référentiel central du projet (origine), vous pouvez le confirmer en exécutant à nouveau la commande d'état.

git status

Vous pouvez également informer vos collègues de commencer à travailler sur le projet en clonant le référentiel sur leurs ordinateurs locaux.

Créer une nouvelle branche Git

Le branchement vous permet de travailler sur une fonctionnalité de votre projet ou de résoudre des problèmes rapidement sans toucher à la base de code (branche principale). Pour créer une nouvelle branche puis y accéder, utilisez respectivement les commandes branch et checkout.

git branch latest
git checkout latest

Alternativement, vous pouvez créer une nouvelle branche et y accéder en une seule étape à l'aide de la commande checkout avec l'indicateur -b.

git checkout -b latest

Vous pouvez également créer une nouvelle branche basée sur une autre branche, par exemple.

git checkout -b latest master

Pour vérifier dans quelle branche vous vous trouvez, utilisez la commande branch (un astérisque indique la branche active) :

git branch

Après avoir créé et basculé vers la nouvelle branche, apportez quelques modifications à celle-ci et effectuez quelques validations.

vim sysadmin/topprocs.sh
git status
git commit add  sysadmin/topprocs.sh
git commit -a -m 'modified topprocs.sh'

Fusionner les modifications d'une branche à une autre

Pour fusionner les modifications du test de branche dans la branche principale, passez à la branche principale et effectuez la fusion.

git checkout master 
git merge test 

Si vous n'avez plus besoin d'une branche particulière, vous pouvez la supprimer à l'aide du commutateur -d.

git branch -d test

Télécharger les modifications à partir du référentiel central distant

En supposant que les membres de votre équipe ont transféré les modifications vers le référentiel central du projet, vous pouvez télécharger toutes les modifications apportées à votre instance locale du projet à l'aide de la commande pull.

git pull origin
OR
git pull origin master	#if you have switched to another branch

Inspecter le référentiel Git et effectuer des comparaisons

Dans cette dernière section, nous aborderons quelques fonctionnalités utiles de Git qui assurent le suivi de toutes les activités survenues dans votre référentiel, vous permettant ainsi d'afficher l'historique du projet.

La première fonctionnalité est le journal Git, qui affiche les journaux de validation :

git log

Une autre fonctionnalité importante est la commande show qui affiche différents types d'objets (tels que des commits, des balises, des arbres, etc.) :

git show

La troisième fonctionnalité essentielle que vous devez connaître est la commande diff, utilisée pour comparer ou afficher les différences entre les branches, afficher les modifications entre le répertoire de travail et l'index, les modifications entre deux fichiers sur le disque et bien plus encore.

Par exemple, pour montrer la différence entre la branche principale et la dernière branche, vous pouvez exécuter la commande suivante.

git diff master latest

Lire aussi : 10 meilleures alternatives Git pour héberger des projets Open Source

Résumé

Git permet à une équipe de personnes de travailler ensemble en utilisant le(s) même(s) fichier(s), tout en enregistrant les modifications apportées au(x) fichier(s) au fil du temps afin qu'elles puissent rappeler des versions spécifiques ultérieurement.

De cette façon, vous pouvez utiliser Git pour gérer le code source, les fichiers de configuration ou tout fichier stocké sur un ordinateur. Vous souhaiterez peut-être vous référer à la documentation en ligne de Git pour plus de documentation.