L’essentiel de Git & Gitlab pour les débutants
Dans cet article, nous allons découvrir l’essentiel de Git et Gitlab afin de permettre une prise en main rapide de ces deux outils 🚀.
- Git est un outil de gestion de version, c’est à dire qu’il permet de sauvegarder plusieurs versions de fichiers et dossiers, ce versioning permet de suivre l’évolution des fichiers et permet aussi de revenir sur n’importe quelle version de ces fichiers au besoin.
- Gitlab est une plateforme de DevOps complète, elle offre énormément de fonctionnalités permettant le travail collaboratif dans le développement logiciel notamment Git, dans ce cours nous allons seulement aborder la partie dépôt distant de Gitlab.
1. Git:
Installation du client Git:
- Installer git sur votre PC https://git-scm.com/ l’installation est très simple, cliquez sur suivant sans changer les valeurs par défaut.
Les commandes ci-dessous doivent être saisies sur le programme git bash si vous utilisez windows, sinon utilisez un simple terminal pour mac et linux.
Dans cette première partie, toutes les commandes vont se dérouler sur votre poste local, il n’y aura pas d’interaction avec un dépôt distant.
Initialisation du dépot local Git:
Créer un dossier “mon_blog” puis rentrer dans le dossier :
mkdir mon_blog
cd mon_blog
Initialiser un dépôt Git local dans le dossier mon_blog ( càd commencer à considérer le versioning du contenu de ce dossier) :
git init
Avec la commande ci-dessous, créer un fichier dont le nom est article-1.txt avec du contenu textuel :
echo "contenu de l’article 1" >> article-1.txt
Vérifier l’état de notre repository :
git status
Le résultat de la commande ci-dessus est le suivant :
On branch master
No commits yet
Untracked files:
(use "git add <file». to include in what will be committed)
article-l.txt
nothing added to commit but untracked files present (use "git add" to track)
-
La première ligne veut dire qu’on se trouve sur la branche principale dont le nom est master.
-
La deuxième ligne veut dire qu’il n’y a pas eu de commit encore.
-
La troisième, quatrième et cinquième lignes veulent dire qu’il existe un fichier (article-1.txt) mais qui n’est pas tracké, c’est à dire qu’on a pas encore accordé la permission à Git de commencer à suivre les changements dans ce fichier.
Git Add:
Par la suite, Git propose la commande add
afin de commencer à tracker notre fichier article-1.txt
git add article-1.txt
Puis on revérifie à nouveau l’état de notre dépôt avec la commande:
git status
Résultat
On branch master
No commits yet
Changes to be committed:
(use "git rm - cached <file»." to unstage)
new file: article-l.txt
Git Commit:
Le résultat de la commande est maintenant différent car le fichier est tracké par Git, mais il n’est pas commité, càd que la version de ce fichier n’est pas encore enregistrée dans notre dépôt, afin de l’enregistrer on fait un commit
:
git commit -m "ajout de l'article 1"
Maintenant on a bien enregistré une première version de notre article dans Git et on a associé le message ajout de l’article 1 à notre enregistrement.
Git est conçu selon un modèle de branches, un repository Git contient au minimum une branche (master), mais dans la pratique on a besoin de plusieurs branches.
Dans le schéma ci-dessus chaque point bleu représente un commit, la branche épaisse est la branche principale qui porte le nom master et contient 5 commits.
La branche brache_1 a comme base le 3 ème commit de la branche master et contient 3 commits propres à elle seule.
la branche branche_2 a comme base le 4ème commit de la branche master et contient 3 commits propres à elle seule.
Git Log:
Revenons à notre exercice :
Tapez la commande suivante :
git log
Résultat:
commit 727ef82c26a75cba962757d1c9524a6f1030b825 (HEAD-> master)
Author: akram mecheri <mecheri.akram@gmail.com>
Date:
Thu Oct 22 21:10:28 2020 +0200
ajout de l'article 1
Git Tag:
La commande git log
permet d’afficher les derniers commits effectués, on remarque un long identifiant alphanumérique pour notre commit, cet identifiant est unique à un commit ( il permet d’identifier notre enregistrement, l’ID généré sur votre terminal est certainement différent du mien) par contre il n’est pas facile de mémoriser un tel identifiant par un humain, pour cette raison on peut utiliser les tag de Git (le mot tag veut dire étiquette).
git tag v1.0.0 727ef82c26a75cba962757d1c9524a6f1030b825
Puis on tape la commande git log:
git log
Résultat:
commit 727ef82c26a75cba962757d1c9524a6f1030b825 (HEAD -> master, tag: v1.0.0)
Author: akram mecheri <mecheri.akram@gmail.com>
Date: Thu Oct 22 21:10:28 2020 +0200
ajout de l'article
On remarque l’apparition du tag v1.0.0 sur notre commit initial.
Git Checkout:
Maintenant créons une nouvelle branche :
git checkout -b branche_1
La commande ci-dessus permet d’abord de créer une nouvelle branche portant le nom branche_1 puis de se positionner dessus pour les prochains commit, càd que les prochains commits seront seulement sur la branche branche_1 et pas sur la branche précédente master.
Maintenant on va créer un nouveau fichier portant le nom article-2.txt puis on va l’ajouter à l’index puis le commiter.
echo "contenu de l'article 2" >> article-2.txt
git add article-2.txt
git commit -m "ajout de l'article 2"
Vérifions le contenu de notre dossier avec la commande ls
:
ls
article-1.txt article-2.txt
On retrouve les deux fichiers article-1.txt et article-2.txt.
Maintenant on souhaite revenir sur notre branche précédente master, pour cela on fait un checkout :
git checkout master
En faisant git checkout master
on reviens sur le dernier commit de la branche master.
Vérifions le contenu de notre dossier avec la commande ls
:
ls
article-1.txt
On ne retrouve que article-1.txt car en faisant git checkout master
on est revenu à l’état de notre repository au dernier commit de la branche master.
Maintenant on va modifier le contenu du fichier article-1.txt, puis on va enregistrer ces modifications dans un nouveau commit :
echo "modification du contenu de l'article 1." >> article-1.txt
git add article-1.txt
git commit -m "modifications sur article 1."
La commande ci-dessous permet d’afficher le graphe Git qui représente nos branches et commits:
git log --all --decorate --oneline --graph
Git Merge:
Maintenant on souhaite que le contenu de la branche branche_1 soit récupéré dans la branche master, pour cela on utilise la commande git merge
:
git merge branche_1
Résultat:
Merge made by the 'recursive' strategy.
article-2.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 article-2.txt
On saisit la commande ls, et on retrouve le fichier article-2.txt qui était créé dans la branche branch_1 :
ls
article-1.txt article-2.txt
On réaffiche le graphe de nos branches et commits:
git log --all --decorate --oneline --graph
On remarque que notre branche branche_1 a été fusionnée dans la branche master, c’est pour cette raison qu’on retrouve le fichier article-2.txt dans la branche master.
Maintenant qu’on a mergé la branche branche_1 on peut la supprimer:
git branch -d branche_1
2. Gitlab
Dans cette partie nous allons envoyer le contenu de notre blog sur un serveur distant (Gitlab), de cette façon nous allons sauvegarder notre travail dans le cloud et on peut le partager avec nos équipes.
Création d’un projet sur Gitlab:
- Créez un compte Gitlab sur https://gitlab.com/
- Cliquez sur Create a project
- Remplissez les champs comme ci-dessous puis cliquez sur Create project
Il est possible d’interagir avec Gitlab via deux protocoles, HTTPS et SSH, la méthode recommandée est en SSH.
Ajout d’une clé SSH:
Pour que vous puissiez interagir avec le serveur Gitlab, il vous faudra ajouter une clé SSH à votre profil, cliquez sur Add SSH key:
Attention si vous avez déjà une clé SSH dans votre dossier ~/.ssh vous n’avez pas besoin de taper la commande ci-dessous, dans le cas contraire tapez la commande ci-dessous, puis appuyez sur Entrer plusieurs fois:
ssh-keygen
Puis tapez la commande :
cat ~/.ssh/id_rsa.pub
Copiez le texte qui s’affiche puis collez le dans le champ key de l’interface Gitlab, ensuite cliquez sur add key.
Vous devriez avoir un résultat qui ressemble à ça :
Maintenant vous pouvez lier votre dépôt local avec le dépôt distant (Gitlab), pour cela revenez sur votre projet mon_blog sur Gitlab, et cliquez sur clone et copiez l’URL qui s’affiche en dessous de Clone with SSH.
Liaison du repo local avec gitlab:
Revenez sur git bash et dans votre projet mon_blog tapez la commande ci-dessous en adaptant la valeur de l’URL SSH avec celle que vous avez copié:
git remote add origin git@gitlab.com:mecheri.akram/mon_blog.git
Git Push:
Pour envoyer le contenu de votre dépôt local vers le dépôt distant vous faites :
git push --set-upstream origin master
Actualisez la page web de Gitlab, vous verrez vos articles apparaitre !
Commit depuis l’interface web gitlab:
Maintenant on va prendre le chemin inverse, càd qu’on va créer un article sur l’interface web de Gitlab et on le récupérera dans notre dépôt local:
Sur l’interface Web de Gitlab :
- Cliquez sur +
- New file
- Remplissez comme ci-dessous
- Puis cliquez sur Commit changes
Maintenant on a un 3ème article rédigé sur Gitlab.
Git Pull:
Pour récupérer l’article sur notre dépôt local :
git pull
Puis on vérifie le contenu de notre dépôt local:
ls
article-1.txt article-2.txt article-3.txt
On retrouve le fichier article-3.txt qu’on a créé sur Gitlab.
Et voilà tout pour ce petit cours Git / Gitlab, vous êtes censé maintenant connaitre assez de commandes Git pour versionner vos fichiers, vous savez aussi comment envoyer ces fichiers sur un dépôts distant.
Pour aller plus loin je vous invite à explorer les commandes Git suivantes:
git diff
git rebase
git fetch
git --help
Pour finir,
Si vous souhaitez un cours plus approfondi sur Git et Gitlab, faites le moi savoir dans la section des commentaires, si ce cours vous a été utile n’hésitez pas à cliquer sur le bouton applaudissement 👏.