Fonctionnalités avancées de Git
Comprendre la sémantique des commandes avancées : annuler sans réécrire l'historique (revert), déplacer le pointeur (reset), mettre de côté (stash) et marquer une version (tag).
Ces fonctionnalités répondent à une question récurrente : que faire quand un commit pose problème, ou quand on veut interrompre son travail sans le perdre ? Elles partagent un même principe — agir sur l'historique ou l'état de travail — mais avec des conséquences très différentes.
🔄 Annuler un commit : revert ou reset ?
On confond souvent revert et reset parce que les deux « annulent ». Leur
différence est pourtant fondamentale et tient à une question : veut-on
réécrire l'historique, ou l'enrichir ?
git revertconserve l'historique. Il crée un nouveau commit dont le contenu inverse le commit visé. L'ancien commit reste visible : on ajoute un « contraire » plutôt qu'on efface. C'est la méthode sûre sur un dépôt partagé, car elle ne casse jamais le travail des autres.git resetdéplace le pointeur de la branche. Selon ses options, il peut simplement déplacer la référence (gardant les fichiers) ou effacer des commits de l'historique visible. Il est idéal en local, quand on n'a pas encore partagé son travail, mais dangereux une fois poussé.
git revert HEAD~1 # ajoute un commit contraire, historique préservé
git reset HEAD~1 # recule la branche d'un commit (à réserver au travail non poussé)📥 Git Stash : mettre son travail de côté
Le git stash répond à un cas pratique fréquent : on est en train de modifier
des fichiers, mais on doit urgentment basculer sur autre chose (une correction,
une revue) sans avoir terminé et donc sans pouvoir committer proprement.
Stash sauvegarde temporairement les modifications en cours dans une pile séparée, et rend votre répertoire de travail propre. Vous pouvez alors agir ailleurs, puis réappliquer ces modifications plus tard. C'est un tiroir temporaire, pas un commit : rien n'apparaît dans l'historique.
git stash # range les modifications en cours
git stash apply # les sort du tiroir et les remet sur le bureau🏷️ Tags et versions
Un tag est un repère nommé et immuable sur un commit précis. Contrairement
aux branches, qui bougent en permanence, un tag désigne toujours le même
endroit : c'est lui qu'on utilise pour marquer une version livrée (v1.0,
v2.3.1). Il crée un lien stable entre un numéro de version et un état exact du
code, ce qui facilite les retours en arrière et les livraisons reproductibles.
git tag v1.0 # marque le commit courant
git push origin v1.0 # partage le repère (les tags ne se poussent pas seuls)🧭 Autres commandes utiles à connaître
Au-delà de ces trois familles, quelques commandes ponctuelles éclairent des situations précises :
git reflog: journal de tous les déplacements du pointeur (même les resets) ; ultime filet de sécurité pour retrouver un commit « perdu ».git cherry-pick: applique un seul commit d'une branche sur une autre, sans fusionner toute la branche.git bisect: recherche binaire automatique pour trouver le commit qui a introduit un bug.git grep: recherche de texte dans les fichiers suivis de la révision courante (par défaut le répertoire de travail) ; pour chercher dans l'historique, on combine avecgit log -S"motif"ougit log -G"regex".
🐙 Points clés à retenir
revertajoute un commit contraire (sûr en équipe) ;resetrecule la branche (à réserver au local).stashmet le travail en pause sans commit, pour reprendre plus tard.- Un
tagfige un instantané de version, contrairement à une branche mobile.
Quiz du chapitre
Git
Terminez le quiz du chapitre pour le marquer comme complété.
Installation et configuration de Git
Comprendre pourquoi Git doit être installé et configuré : le rôle de l'identité de commit et les réglages une fois pour toutes.
Introduction à GitHub / GitLab
GitHub et GitLab : deux plateformes de collaboration au-dessus de Git, leur rôle, leurs points communs et leurs différences.