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.
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 :
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é
libgit2et 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>