On peut faire tout plein de choses

Jusque là c’était plutôt théorique, défaire un commit c’est bien, mais on peut faire quoi de plus ? Voyons donc les grands classiques d’utilisation de la commande reset.

Ça ne saute pas au yeux quand on lit sa documentation, mais git reset nous permet de faire plein de choses :

  • comme on l’a vu, on peut défaire un commit, par exemple pour le corriger ou le compléter ;
  • on peut aussi vouloir découper un commit s’il traite de plusieurs sujets entremêlés ;
  • parfois on souhaite aussi défaire des commits pour les supprimer car ils n’ont plus d’intérêt, ou même pour les regrouper car on a produit 2 commits pour un même sujet ;
  • il arrive aussi qu’on s’aperçoive tardivement que le travail que nous réalisons mérite d’être sur une branche séparée, là encore reset va nous aider ;
  • de temps à autre on souhaite aussi purger tout notre travail en cours, trop peu satisfait·e de ce qu’on avait réalisé ;
  • enfin, si on fait n’importe quoi avec reset ou si on s’est trompé·e en l’utilisant, on peut « resetter le reset ».

Je vais donc essayer de vous décrire comment faire tout ça.

J’ai commité trop vite

Commençons avec le premier cas classique du « oh non j’ai oublié un truc dans mon commit » ou « mince, j’ai ajouté un truc que je n’aurais pas dû, et j’ai commité ». Dans ce type de situation on veut modifier le commit qu’on vient de produire, donc défaire le commit et garder les modifications qu’il contenait. Ça, on sait faire, on a vu que git reset --soft ou même git reset --mixed sont faits pour ça.

Dans notre slide nous utilisons une notation particulière HEAD~1 qu’on a aussi vu dans des exemples précédents. C’est ce que Git appelle une syntaxe de révision, qui me permet de désigner la position précédente de HEAD dans la ligne « courante » de mon historique. Si vous avez votre log affiché, vous pouvez tout aussi bien utiliser le SHA-1 du commit ciblé, ça fonctionnera pareil.