Mot-clef « Git »

Réordonner les commits dans Tortoise Git

Sous Windows, j’utilise Tortoise Git. On pourrait épiloguer sur ses qualités et défaut par rapport aux autres clients Git disponibles mais ce n’est pas le sujet. Je l’utilise principalement parce que je le connais et que je sais que si je fais les choses comme j’en ai l’habitude ça fait ce que j’attends (je trouve ça assez rassurant personnellement).

Il y a peu, j’avais plusieurs commits locaux et je voulais faire un amend sur le second. Plutôt que d’y renoncer je me suis dit que même si je n’avais jamais trouvé ça dans l’interface, il y avait peut-être moyen de réordonner les commits (puisque ça existe en ligne de commande, même si je n’ai jamais réussi à retenir plus de 24h la marche à suivre les différentes fois où on me l’a expliquée/montrée).

Et j’ai été agréablement surpris de découvrir que oui, c’est possible dans Tortoise Git, même si c’est bien caché (en tous cas moi je ne serais jamais tombé dessus tout seul). J’ai trouvé la réponse la plus claire ici et en voici une traduction en français (mais avec les entrées de menu an anglais parce que j’utilise la version anglophone) :

  • ouvrir l’écran de visualisation des logs avec Tortoise Git (“Git show log” sur la racine du dépôt)
  • faire un clic droit sur un des commits qui ne soit pas le dernier et sélectionner “rebase {maBranche} onto this”
  • dans l’écran de rebasage, sélectionner “FETCH_HEAD” dans le champ “upstream”
  • cocher la case “Force rebase”
  • la liste des commits s’affiche dans la fenêtre
  • cliquer sur le commit à réordonner et utiliser les boutons “Up” et “Down” pour changer sa position
  • une fois l’ordre satisfaisant, cliquer sur “Start Rebase”
  • c’est fait :)

Attention : les identifiants des commits réordonnés seront modifiés, veillez donc à bien limiter cette opération à des commits locaux qui n’ont pas encore été propagés sur un dépôt partagés sans quoi vous risquez d’avoir de mauvaises surprises (dans ce cas vous seriez forcé de faire un force push, ce qui est un bon indice qu’il y a un problème) !