Maîtriser l'essentiel de Git en quelques minutes

Maîtriser l'essentiel de Git en quelques minutes

Tech web
Cloche d'abonnement aux notifications | |
  • Recevoir les notifications

Git est un logiciel de gestion de versions à destination des développeurs. S’il est envisageable de se passer d’un tel logiciel, celui-ci pourrait bien vous tirer de quelques misères, particulièrement si vous travaillez en équipe.

Au cours de cet article, nous allons voir comment utiliser Git à l’aide de scénarios pour que cela soit le plus concret possible.

Ce que Git va faire pour vous :

  • stocker le code de votre projet sur un serveur en ligne et ainsi vous permettre de reprendre ce projet depuis n’importe quel ordinateur
  • conserver les anciennes versions de chaque fichier du projet
  • vous permettre de travailler à plusieurs dans le code du projet en étant certain de ne pas écraser le code des autres
  • vous permettre de savoir qui a fait telle ou telle modification

 

Installation

Git est à l’origine conçu pour Linux et plus particulièrement pour une utilisation via le terminal de Linux. Il a d’ailleurs été développé par Linus Torvald, auteur du noyau Linux. Il peut cependant être installé sur Windows via un système d’émulation des commandes Unix, mais aussi sur Mac via un installateur, ou en passant par le gestionnaire de paquets “Homebrew”.

 

Installation sur Linux

Je pars du principe que vous êtes sur une distribution Ubuntu, Debian, ou du moins que vous avez le gestionnaire de paquets “apt-get”. Cependant, vous pouvez très bien l’installer avec n’importe quelle autre configuration.

Ouvrez un terminal et entrez ces commandes :

sudo apt-get update
sudo apt-get install git

Ensuite, configurez votre nom et votre email comme ceci :

git config --global user.name "John Doe"
git config --global user.email "john@karac.ch"

 

Installation sur Windows

Il n’existe pas de moyen d’installer Git en passant par un terminal sur Windows. Pas de problème, nous allons le faire par le biais d’un installateur. Téléchargez-le ici.

Laissez toutes les options comme elles sont proposées par défaut lors de l’installation. Vous pourrez ensuite ouvrir un terminal nommé “Git Bash” pour y exécuter vos commandes Git.

Ouvrez-le et configurez votre nom et votre email avec les commandes suivantes :

git config --global user.name "John Doe"
git config --global user.email "john@karac.ch"

 

Installation sur macOS

Comme mentionné plus haut, il existe plusieurs méthodes pour installer Git Sur macOS. Nous allons le faire “façon développeur” avec le gestionnaire de paquets “Homebrew”.

 

Si vous n’avez pas Xcode sur votre machine, il faudra commencer par l’installer. Je vous propose d’installer la version “lignes de commandes”, beaucoup plus légère :

xcode-select --install

Installez ensuite Homebrew :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Puis, configurez votre nom et votre adresse email :

git config --global user.name "John Doe"
git config --global user.email "john@karac.ch"

 

Fonctionnement de Git en quelques mots

Je ne vais pas m’attarder sur le fonctionnement de Git dans les détails, mais une petite base est tout de même la bienvenue histoire de comprendre ce que nous allons faire par la suite.

Git est un logiciel de gestion de version distribué. Cela signifie que les différentes versions des fichiers de votre projet seront stockées sur l’ordinateur de chacun des contributeurs (contrairement au logiciel de gestion de version centralisé pour lequel les fichiers sont stockés uniquement sur un serveur). Cependant avec Git, pour faciliter la transmission des modifications, les fichiers sont également stockés sur un serveur.

Pour le choix du serveur, c’est selon vos besoins. Si vous travaillez sur un projet open source et que n’importe qui doit pouvoir accéder aux fichiers, vous pouvez très bien utiliser le célèbre “Github”. Si votre projet est confidentiel, préférez “Bitbucket” ou “Gitlab”. Ils bénéficient tous d’une offre gratuite avec plus ou moins de limitations.

 

Lexique

Encore une petite chose, Git possède un vocabulaire spécifique. Voici un petit lexique des mots les plus courants :

Repository (“dépôt” en français) : il s’agit de l’espace de stockage que vous allez créer sur le serveur pour y déposer les fichiers de votre projet

Push (pousser) : lorsque vous envoyez des fichiers sur le serveur, vous faites un “push”

Pull (tirer) : lorsque vous téléchargez la dernière version des fichiers sur votre ordinateur à partir du serveur, vous faites un “pull”

Clone (cloner) : lorsque vous copiez pour la première fois un projet sur votre ordinateur à partir du serveur. Les mises à jours des fichiers par la suite seront des “pull”

Commit (valider) : valider des modifications avant de les envoyer au serveur

Branch (branche) :  Git permet de créer de nouvelles branches, par exemple pour développer une fonctionnalité spécifique

Master (maître) : il s’agit de la branche principale du projet

Merge (fusionner) : En général, après avoir terminé l’implémentation d’une fonctionnalité sur une nouvelle branche, on l’ajoute à la branche “Master” en faisant un “Merge”

 

Voyons maintenant l’utilisation de Git pour dans des cas concrets parmis les plus fréquents.

Pour la suite de cet article, vous aurez besoin de vous déplacer dans les dossiers de votre ordinateur directement depuis le terminal. Pour afficher les sous-dossiers visible depuis le dossier dans lequel vous vous trouvez dans le terminal, utilisez la commande “ls”. Pour changer de dossier, utiliser la commande “cd”. Par exemple, si vous vous trouvez dans votre répertoire personnel et que vous entrez la commande “cd Desktop/” dans le terminal, vous vous retrouverez dans le répertoire “Desktop” qui est correspond au “Bureau” de votre ordinateur (sur macOS).

 

Modifier des fichiers sur un projet existant

Imaginons que vous arriviez au bureau et que votre collègue Robert vous dise “Pourrais-tu aller modifier la page karac.html du projet “karac-cest-cool”. Si vous n’avez encore jamais travaillé sur ce magnifique projet, voici ce que vous devrez faire (je pars du principe que le serveur utilisé est bitbucket.org) :

1. Vous connecter au serveur

Connectez-vous sur bitbucket.org ou crééz-y un compte si vous n’en avez pas encore

2. Copier la dernière version des fichiers qui se trouvent sur le serveur sur votre ordinateur

  • Sélectionnez le dépôt karac-cest-cool, puis cliquez sur le bouton “Clone”, et copiez la ligne de commande qui vous est proposée
  • Créez un dossier sur votre ordinateur à l’emplacement dans lequel vous voulez stocker le projet
  • Ouvrez un terminal (ou Git Bash sur Windows), allez dans le dossier que vous venez de créer
  • Collez la commande “git clone…” que vous avez copiée précédemment dans le terminal

3. Modifier le fichier karac.html

Ouvrez le fichier karac.html qui devrait maintenant se trouver dans votre dossier et éditez-le

4. Envoyer les modifications au serveur

Ajouter le(s) fichier(s) modifié(s) à la liste des fichiers qui seront envoyés au serveur avec la commande suivante :

git add *

Validez les changements et ajoutez un petit message explicatif :

git commit -m “correction d’un bug d’affichage”

Envoyez les changements sur le serveur :

git push origin master

5. (Optionnel) Dire à votre collègue qu’il peut télécharger la nouvelle version des fichiers

Crier “hey Robert, tu peux faire un Pull”

Robert peut alors reprendre la dernière version des fichiers chez lui avec la commande :

git pull origin master

 

Précisons que pour le “push” et le “pull”, le paramètre “master” correspond à la branche sur laquelle on envoie, ou l’on télécharge les fichiers.

 

Créer un dépôt Git pour votre projet existant

Imaginons que vous disposiez d’un dossier contenant un projet existant, et que vous souhaitiez désormais utiliser Git pour ce projet, avec bitbucket.org comme serveur. Voici ce que vous allez devoir faire :

1. Vous connecter sur bitbucket.org et créer un nouveau dépôt (repository) avec le bouton (+) sur la gauche

2. Initialiser Git dans le dossier de votre projet sur votre ordinateur

Allez dans le dossier du projet, ouvrez-y un terminal et entrez cette commande :

git init

3. Associer le dossier de votre projet au dépôt sur le serveur

Dans le même terminal, entrez la commande qui vous est proposée sur bitbucket.org après avoir créé le dépôt (elle devrait ressembler à celle-ci) :

git remote add origin https://vous@bitbucket.org/vous/karac-cest-cool.git

4. Ajouter les fichiers de votre projet à la validation, valider puis envoyer les fichiers au serveur

Toujours dans le même terminal, entrez ces commandes :

git add *
git commit -m “commit initial”
git push origin master

 

Vous devriez alors pouvoir consulter les fichiers directement sur bitbucket.org si tout s’est bien déroulé.

 

Mettre à jour les fichiers à partir du serveur et résoudre les conflits

Admettons que vous souhaitiez envoyer vos dernières modifications sur le serveur.

1. Valider et envoyer vos modifications sur le serveur

git add *
git commit -m “mes modifications”
git push origin master

Problème : il y a un conflit ! En effet, il semblerait que ce cher Robert ait modifié le même fichier que vous ! Pas de panique ! Le message d’erreur (en anglais) vous indique que le serveur contient des modifications que vous n’avez pas encore téléchargées sur votre ordinateur. Il faut donc commencer par les télécharger. N’ayez pas peur, cela ne supprimera pas vos dernières modifications.

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://vous@bitbucket.org/vous/karac-cest-cool.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
MacBook-Pro-de-Vous:karac-cest-cool vous$ 

2. Récupérer la dernière version des fichiers du projet sur le serveur

git pull origin master

Le nouveau message d’erreur devrait alors ressembler à ceci :

Auto-merging karac.html
CONFLICT (content): Merge conflict in karac.html
Automatic merge failed; fix conflicts and then commit the result.

 

On nous annonce donc un conflit qui n’a pas pu être réglé automatiquement dans le fichier karac.html. Pour le résoudre, ouvrez ce fichier et observez :

code-conflit-git

Git vous a soigneusement signalé le problème. Alors que vous proposez de dire que karac “c’est la classe mondiale”, Robert suggère que karac “c’est la classe internationale”.

À vous de choisir la meilleure solution et d’effacer la moins bonne. Notez que la mise en valeur du conflit peut changer en fonction de l’éditeur utilisé.

 

Une fois que vous avez supprimé ce que vous ne voulez pas garder, il ne vous reste plus qu’à renvoyer le fichier au serveur.

3. Envoyer le fichier modifié au serveur

git add karac.html
git commit -m “résolution du conflit”
git push origin master

 

Créer une nouvelle branche

Imaginons que vous souhaitez créer une nouvelle fonctionnalité de gestion d’événements à votre site web. Vous ne souhaitez pas travailler sur la branche principale (master) du projet pour ne pas prendre le risque d’y introduire des bugs. Vous décidez donc de faire une nouvelle branche nommée “event-manager”. Une fois qu’elle sera terminée et testée, vous aurez sans doutes envie de l’inclure sur la branche master.

1. Créer la nouvelle branche

Exécutez cette commande depuis le dossier du projet dans un terminal :

git branch event-manager

2. Vous placer sur la nouvelle branche

git checkout event-manager

3. Vérifier que tout est correct

git branch

Vous devriez voir vos deux branches avec une petite “*” devant celle qui est active. Attention, lorsque vous ferez des “push” à destination de cette nouvelle branche, il faudra penser à faire “$ git push origin event-manager” car vous ne voulez pas envoyer les modifications sur la branche “master”. Il en sera de même pour les “pull”.

4. Une fois votre fonctionnalité de gestion d’événements terminée, testée et “pushée”, se positionner sur la branche “master”

git checkout master

5. Fusionner la branche “event-manager” avec la branche master

git merge event-manager

 

Pour supprimer une branche qui n’a pas encore été créée sur le dépôt distant :

git branche -d event-manager

 

Si elle est présente sur le dépôt distant :

git push origin --delete event-manager

 

Informations et commandes utiles

Un dépôt local (comprenez “dossier dans lequel vous avez initialisé Git”) se compose de 3 hiérarchies gérées par Git. La première est le dossier contenant tous les vrais fichiers du projet. La seconde est un index (appelée “stage” en anglais) qui répertorie les fichiers que vous avez ajoutés avec la commande “git add”. La dernière, nommée “HEAD” liste les fichiers qui ont été validés avec un “git commit”.

Pour consulter les fichiers que l’on a ajoutés à l’index avec “git add”, on peut lancer la commande suivante :

git status

Le terminal vous sortira alors la liste des fichiers ayant été modifiés et ayant été indexés. Vous pouvez désindexer des fichiers si vous changez d’avis avec la commande :

git reset HEAD karac.html

Vous avez également la possibilité d’obtenir la liste des commits qui ont été faits avec cette commande :

git log

Si vous êtes tenté par une façon plus visuelle et assez complète pour visionner l’historique du projet (ne vous attendez pas à une interface très userfriendly), vous pouvez utiliser la commande suivante :

gitk

 

Sources

 

Catégories :
Tech web

Tags :
outils pratiques Linux Windows macOS

Vous avez aimé cet article ? Suivez-nous sur Facebook pour ne rien manquer !