Git est un système de contrôle de version distribué. Il est principalement utilisé par les développeurs de logiciels pour la gestion de leur code source. Git est un logiciel gratuit et open source et de nombreuses grandes organisations l'utilisent pour gérer leur énorme base de code.
Dans ce tutoriel, nous allons nous familiariser avec Git. Ce sera un guide pratique. Ce didacticiel suppose que Git est installé sur votre système.
Configuration initiale de l'utilisateur Git
Nous devons d'abord configurer les paramètres de l'utilisateur Git. Nous pouvons définir ces paramètres pour tous les référentiels présents sur le système actuel ou pour un référentiel particulier. Comprenons cela avec un exemple :
Identité de l'utilisateur
Dans Git, nous pouvons spécifier l'identité de l'utilisateur en fournissant son nom et son adresse e-mail. Ces informations seront utilisées lors de chaque opération de validation. Exécutez la commande ci-dessous dans le terminal pour attribuer une identité :
$ git config --global user.name "Linuxtechi User" $ git config --global user.email "[email protected]"
Éditeur
Ce paramètre configure l'éditeur, qui sera utilisé lors de la transmission du message de validation :
$ git config --global core.editor vim
Compression
Ce paramètre configure le niveau de compression à utiliser. La plage valide pour la compression est comprise entre -1 et 9. La valeur -1 indique la compression zlib et correspond au niveau de compression par défaut. La valeur 0 signifie qu'il n'y a pas de compression, et 1 à 9 sont différents compromis vitesse/taille, 9 étant le plus lent.
$ git config --global core.compression 2
Outil de comparaison
Ce paramètre configure l'outil de visualisation des différences. Par exemple, la commande ci-dessous configure vimdiff en tant qu'outil de comparaison :
$ git config --global diff.tool vimdiff
Dans les commandes ci-dessus, nous avons utilisé –global option partout, ce qui rendra cette configuration globale. Cela signifie que la même configuration sera appliquée à tous les référentiels présents sur le système actuel. Pour rendre le référentiel de configuration spécifique, supprimez simplement l'option –global.
Configuration de la liste
Pour répertorier la configuration de Git, exécutez la commande ci-dessous dans le terminal :
$ git config -l
Cette commande générera la sortie suivante :
core.repositoryformatversion=0 core.filemode=true core.bare=false core.logallrefupdates=true core.editor=vim core.compression=2 user.name=Linuxtechi User [email protected] diff.tool=vimdiff
Référentiels Git
Le référentiel est un emplacement où le code source est stocké. Nous pouvons soit créer un nouveau référentiel, soit utiliser un référentiel existant. Pour créer un nouveau référentiel vide, exécutez la commande ci-dessous :
$ mkdir my-repo.git $ cd my-repo.git $ git init --bare Initialized empty Git repository in my-repo.git
Cette méthode sera utile lorsque vous démarrez un nouveau projet. Une autre méthode consiste à utiliser le référentiel existant. Un tel référentiel est hébergé sur un serveur distant comme GitHub. Pour télécharger le référentiel distant, utilisez la commande clone comme suit :
$ git clone https://github.com/linuxtechiuser/my-repo.git
Dans la commande ci-dessus, le dernier argument est le chemin du référentiel distant.
Flux de travail Git
Dans cette section, nous aborderons le workflow git.
Introduire de nouvelles modifications
La première étape consiste à introduire de nouveaux changements. Il peut s'agir de l'ajout d'un nouveau fichier ou de la mise à jour de fichiers existants. Créons un nouveau fichier et modifions le fichier existant
$ touch AUTHORS # Create new file $ echo "New Contents" >> README # Update existing file
Vérifier l'état du dépôt
Git est un système de suivi de contenu, il identifiera ci-dessus deux changements. Vérifions l'état du référentiel :
$ git status -s M README ?? AUTHORS
Dans la sortie ci-dessus, la lettre M apparaît avant README qui indique que le fichier existant est modifié. Alors que ?? apparaît avant AUTHORS, ce qui indique qu'il s'agit d'un nouveau fichier et que Git n'en est pas conscient. Un tel fichier est donc appelé fichier non suivi.
Ajouter un fichier à l'ensemble de modifications
Instruisons Git de suivre ce nouveau fichier. Nous pouvons y parvenir en utilisant la commande add. Cette opération commencera à suivre les modifications apportées à ce fichier.
$ git add AUTHORS
Vérifions maintenant l'état du référentiel :
$ git status -s A AUTHORS M README
La sortie ci-dessus montre A avant AUTHORS, ce qui indique que ce fichier vient d'être ajouté sous Git. Nous pouvons ajouter n'importe quel nombre de fichiers à l'aide de cette commande.
Supprimer le fichier de l'ensemble de modifications
Demandons à Git d'annuler le suivi de ce fichier nouvellement ajouté. Nous pouvons y parvenir en utilisant la commande reset. Cette opération supprimera le fichier du changeset
$ git reset AUTHORS $ git status -s M README ?? AUTHORS
La sortie ci-dessus montre que le fichier AUTHORS n'est pas suivi par Git.
Valider les modifications
Dans Git, les fichiers qui font partie du changeset formeront un commit. Chaque commit recevra un identifiant unique. Créons d'abord le changeset
$ git add AUTHORS $ git add README
Maintenant, livrons les modifications au référentiel local avec le message de validation. Dans la commande ci-dessous, l'argument -m indique le message de validation.
$ git commit -m "Updated README and added AUTHORS"
Lorsque vous exécutez la commande ci-dessus, la sortie suivante sera générée :
[master 0b124eb] Updated README and added AUTHORS 2 files changed, 1 insertion(+) create mode 100644 AUTHORS
Examiner les modifications
Dans cette section, nous discuterons des commandes qui nous permettront d'examiner les modifications apportées au référentiel.
Afficher le journal de validation
Le référentiel peut contenir plusieurs validations par plusieurs auteurs. Nous pouvons utiliser la commande log pour afficher tous les commits disponibles :
$ git log
Lorsque vous exécutez la commande ci-dessus, la sortie suivante sera générée :
commit 0b124eb6d0109d837f6f9396c9937406abd3f456 (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:06:55 2018 +0530 Updated README and added AUTHORS
C'est le commit que nous avions créé plus tôt. Dans la commande ci-dessus :
- L'ID hexadécimal représente un ID de validation
- La section auteur du commit affiche des détails sur l'auteur de ces modifications
- La section Date affiche la date et l'horodatage du commit
Afficher le journal de validation abrégé
La commande ci-dessus affichera des informations détaillées sur chaque validation. Pour afficher une courte description de chaque commit, utilisez l'option –oneline comme suit :
$ git log --oneline
Lorsque vous exécutez la commande ci-dessus, elle générera la sortie suivante :
0b124eb (HEAD -> master) Updated README and added AUTHORS
Afficher le commit
L'ID de validation est associé à chaque ensemble de modifications. Nous pouvons utiliser cet ID avec la commande show pour afficher le contenu du commit.
$ git show 0b124eb6d0109d837f6f9396c9937406abd3f456
Lorsque vous exécutez la commande ci-dessus, la sortie suivante sera générée :
commit 0b124eb6d0109d837f6f9396c9937406abd3f456 (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:06:55 2018 +0530 Updated README and added AUTHORS diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/README b/README index 980a0d5..5680123 100644 --- a/README +++ b/README @@ -1 +1,2 @@ Hello World! +New Contents
Afficher les différences
La commande Diff nous permet d'examiner les modifications avant de créer un ensemble de modifications. La commande Diff montre les différences entre le référentiel et l'espace de travail local. Modifions le fichier README et visualisons les différences
$ echo "Generating diff" >> README $ git diff diff --git a/README b/README index 5680123..3158230 100644 --- a/README +++ b/README @@ -1,2 +1,3 @@ Hello World! New Contents +Generating diff
Dans la commande ci-dessus :
- Le signe + indique les modifications qui sont ajoutées au fichier
- – le signe indique les modifications qui sont supprimées du fichier
Travailler avec des référentiels distants
Jusqu'à présent, nous ne travaillions qu'avec un référentiel local. Les autres développeurs ne peuvent pas utiliser les modifications apportées par nous car elles sont locales. Par conséquent, la collaboration de code n'est pas possible. Cette section décrira les commandes qui nous permettront d'interagir avec les référentiels distants
Publier les modifications dans le référentiel distant
Nous pouvons publier les modifications locales dans le référentiel distant afin que d'autres développeurs puissent l'utiliser. Avant de publier les modifications, nous devons créer un ensemble de modifications et un commit local. Nous pouvons publier les modifications à l'aide de la commande push comme suit :
$ git push
Cette commande copie les modifications de l'espace de travail local vers le référentiel distant. Dans Git, cette opération est appelée opération push.
Synchroniser l'espace de travail avec le référentiel distant
De nombreux développeurs peuvent publier leurs modifications d'espace de travail dans un référentiel distant. Git nous permet de télécharger ces modifications et de synchroniser l'espace de travail avec le référentiel. Nous pouvons y parvenir en utilisant la commande pull :
$ git pull
Dans Git, cette opération est appelée opération pull.
Diverses commandes Git
Cette section traite de diverses commandes Git qui seront utiles pour effectuer des tâches quotidiennes :
Modifier le dernier commit
Git nous permet de modifier le dernier commit. Nous pouvons utiliser cette méthode pour éviter la création d'un nouveau commit. Il est principalement utilisé pour modifier le message de validation précédent. Pour modifier le dernier commit, utilisez –amend comme suit :
$ echo "Yet another new change" >> README $ git add README $ git commit --amend -m "This is amended commit
Vérifions maintenant le journal de validation :
$ git log commit 8bf67aec1d1de87f03ab6aae93940b17826fde1c (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:54:55 2018 +0530 This is amended commit
Si vous observez attentivement la sortie ci-dessus, nous pouvons voir le nouveau message de validation, son ID et son nouvel horodatage.
Supprimer les fichiers non suivis
Les fichiers non suivis sont ceux qui sont inconnus de Git. Nous pouvons supprimer tous les fichiers non suivis à l'aide de la commande clean.
Créons quelques fichiers non suivis :
$ touch delete-me-1 delete-me-2 delete-me-3
Pour supprimer tous les fichiers non suivis ci-dessus, utilisez la commande clean avec -f comme suit :
$ git clean -f Removing delete-me-1 Removing delete-me-2 Removing delete-me-3
Veuillez noter que cette commande supprimera définitivement les fichiers, utilisez-la donc avec prudence.
Afficher les commits d'un auteur particulier
Si nous utilisons la commande log, elle affiche les commits de tous les auteurs. Pour afficher les commits d'un auteur particulier, utilisez l'indicateur –author comme suit :
$ git log --author=Linuxtechi
Lorsque vous exécutez la commande ci-dessus, elle répertorie tous les commits des auteurs Linuxtech comme suit :
commit 8bf67aec1d1de87f03ab6aae93940b17826fde1c (HEAD -> master) Author: Linuxtechi User <[email protected]> Date: Fri Jul 27 21:54:55 2018 +0530 This is amended commit
Afficher l'historique de chaque fichier ligne par ligne
Pour afficher l'historique ligne par ligne, nous pouvons utiliser la commande Blame.
$ git blame README
Lorsque vous exécutez la commande ci-dessus, la sortie suivante sera générée :
76294131 (Linuxtechi User 2018-07-27 21:12:11 -0700 1) Hello World! 8bf67aec (Linuxtechi User 2018-07-27 21:54:55 +0530 2) New changes 8bf67aec (Linuxtechi User 2018-07-27 21:54:55 +0530 3) Yet another changes
Dans la commande ci-dessus :
- La première colonne indique l'ID de validation
- La deuxième colonne indique l'auteur
- La troisième colonne indique les horodatages
- La dernière colonne indique le numéro de ligne et le contenu du fichier
Afficher les différences depuis la zone de préparation
Lorsque vous créez un ensemble de modifications à l'aide de la commande add, le fichier est logiquement déplacé vers la zone de transit. Voyons avec cet exemple :
$ echo "Let us demonstrate staging area" >> README $ git add README $ git diff
La commande ci-dessus ne montrera aucune différence car le fichier est déplacé vers la zone de transit. Utilisons l'opération –staged pour voir les différences :
$ git diff --staged diff --git a/README b/README index 74729a2..8bc5ffd 100644 --- a/README +++ b/README @@ -1,3 +1,4 @@ Hello World! New changes Yet another changes +Let us demonstrate staging area
Conclusion
Dans ce tutoriel, nous avons discuté des opérations de base de Git avec des exemples simples. Ce tutoriel est un bon point de départ pour les débutants de Git.
En savoir plus : Apprenez la commande Git avec des exemples pratiques sur Linux - Partie 2