Cheat Sheet : Git


Comprendre Git et son fonctionnement

Git est le logiciel de gestion de version le plus populaire actuellement. C’est un logiciel libre, et il est utilisé par des millions de personnes.

Il existe beaucoup de commandes pour utiliser Git. Voici une liste des principales commandes à connaître. Ces commandes sont à entrer dans la console ou l’invite de commande de votre système d’exploitation.

Ce contenu est encore en cours de rédaction et sera complété au fur et au mesure.

Sommaire

Les bases du fonctionnement de Git

Il existe 3 zones bien distinctes lorsqu’on travaille en local sur git :

  • Zone de travail (Working Directory) : copie locale des fichiers du dépôt git, c’est l’espace de travail sur lequel on fait les modifications.
  • Zone de transit (Staging Area) : zone de stockage temporaire des fichiers modifiés, prêts à être envoyés dans le dépôt.
  • Dépôt local (Local Repository) : espace dans lequel son stockés et archivés les instantanés du projet.

Principales commandes

  • git add : pour ajouter dans la zone de transit;
  • git commit : pour stocker dans le dépôt local;
  • git push : pour “pousser” dans le dépôt distant;
  • git pull : pour “tirer” les modification depuis le dépôt distant et mettre à jour la zone de travail.

Worflow de base

Un petit schéma pour illustrer une utilisation basique avec les commandes de bases :

Git - Workflow de base

Les commandes à connaitre

Afficher la version de git

Pour afficher la version de git et vérifier si celui-ci est bien installé, utiliser la commande suivante :

git --version

Afficher la configuration de Git

Pour afficher les informations sur la configuration Git sous forme de liste, dont le nom et l’adresse mail :

git config -l

Configurer le nom d’utilisateur et l’email

Pour configurer un nom d’utilisateur et une messagerie par défaut (configuration globale enregistrée dans le fichier ~/.gitconfig, utilisée pour référencer l’utilisateur lors des commits) :

git config --global user.name "Skeeter"
git config --global user.email "mydevmail@myawesomedomain.net"

On peut aussi configurer le nom et l’adresse mail au niveau du dépôt, ce qui écrasera la configuration globale juste pour celui-ci :

git config --global user.name "Skeeter"
git config --global user.email "mydevmail@myawesomedomain.net"

Initialiser un dépôt local Git

Se placer dans le dossier racine du projet en entrer la commande :

git init

Cloner un dépôt existant

Pour obtenir une copie d’un dépôt existant, utiliser la commande git clone [url] :

git clone https://github.com/libgit2/libgit2

La commande va créer un répertoire nommé libgit2 et récupère toutes les données du dépôt à l’intérieur.

Pour cloner le dépôt dans un répertoire nommé différemment, on peut spécifier le nom en supplément sur la ligne de commande :

git clone https://github.com/libgit2/libgit2 monlibgit2

Ici, le répertoire cible s’appellera monlibgit2.

Cloner un dépôt avec des sous-modules

Si le dépôt distant contient un ou plusieurs sous-modules, ceux-ci ne contiendront pas de fichiers après l’exécution de la commande git clone.

Pour cloner un projet et récupérer tous les sous-modules en même temps, utiliser la commande :

git clone --recurse-submodules [url]

Si le projet est déjà cloné mais que le paramètre --recurse-submodules n’a pas été utilisé, il faut exécuter deux commandes supplémentaires :

git submodule init
git submodule update

On peut utiliser la syntaxe suivante pour passer une seule commande :

git submodule update --init

Les fichiers des sous-modules sont ensuite disponibles.

Ajouter un fichier dans la zone de transit

git add <file-name>

Ajouter tous les fichiers dans la zone de transit

git add .

Ajouter seulement certains fichiers dans la zone de transit

Il est possible d’utiliser le caractère * pour créer un filtre de sélection des fichiers :

git add NomFic*

Afficher l’état du dépôt courant et des fichiers

Cette commande permet d’afficher l’état du dépôt courant, ainsi que le statut des fichiers (staged, unstaged et untracked) :

git status

Après avoir récupéré les changements avec la commande git fetch, git status permet aussi de voir si le dépôt courant est bien à jour par rapport au dépôt distant :

PS C:\Dev\my-project> git status
On branch master
Your branch is behind 'origin/master' by 134 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)

nothing to commit, working tree clean
PS C:\Dev\my-project>

Ici, on constate qu’il y a 134 modifications en attente et la commande propose d’utiliser git pull pour récupérer les changements en local.

Ajouter des changement dans le dépôt local (commit)

Pour enregistrer un changement :

git commit

La commande affiche un éditeur pour entrer un message de description.

Pour enregistrer un changement avec un message de description :

git commit -m "Mon message de description"

Pour enregistrer tous les changements sans les passer dans la zone de transit :

git commit -a -m "Mon message de description"

Attention, ne semble pas prendre en compte les fichiers non trackés…

Pousser (push) les changements dans le dépôt distant

git push

Cette commande expédie tous les changements locaux vers le dépôt distant.

Récupérer (fetch) la liste des changements dans le dépôt distant

Pour récupérer les changements provenant du dépôt distant, utiliser la commande :

git fetch

Cette commande télécharge les changements depuis le dépôt distant mais ne fait pas de merge avec les branches en local. On peut ensuite mettre à jour le dépôt local avec la commande git pull.

Récupérer (pull) les changements depuis le dépôt distant

Pour récupérer les données envoyées par les autres développeurs sur le dépôt distant, on peut utiliser la commande suivante :

git pull

Cette commande “tire” (pull) les changements depuis le dépôt distant et met à jour le dépôt local.

Afficher l’historique des changements (commit) du dépôt courant

git log

Afficher l’historique des changements (commit) sous forme de graphique

git log --graph --oneline
  • --graph : affiche les changements sous forme de graphique (en format texte)
  • --oneline : affiche la description du changement sur une seule ligne

Afficher les information sur un changement (commit) spécifique

git show <commit-id>

Afficher les branches

git branch

La commande affiche la liste de toutes les branches du projet et affiche la branche actuelle en vert et avec une astérisque.

Créer une branche

git branch <new-branch-name>

Références

Git