TW3 — Technologies du Web 3

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 revert conserve 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 reset dé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 avec git log -S"motif" ou git log -G"regex".

🐙 Points clés à retenir

  • revert ajoute un commit contraire (sûr en équipe) ; reset recule la branche (à réserver au local).
  • stash met le travail en pause sans commit, pour reprendre plus tard.
  • Un tag fige un instantané de version, contrairement à une branche mobile.

Quiz du chapitre

2 questions
0 / 2 répondue0%
  1. 1git stash apply réapplique les modifications mises de côté. Que devient le stash après application ?
  2. 2Quelle est la différence principale entre git reset et git revert ?
Répondez à toutes les questions pour valider.

Git

Terminez le quiz du chapitre pour le marquer comme complété.

Tableau de bord

On this page