Git protip : forcer gentiment le push
Par Maxime Bréhin • Publié le 23 janvier 2023 • 1 min

Ah, le forçage de push ou l’écrasement de l’historique distant par notre historique local, voilà un sujet qui crée beaucoup d’agitation !

Le tumulte qu’il génère est souvent lié à une compréhension partielle du potentiel de la commande push. Cette même compréhension partielle est imputable à une mauvaise approche de conception / nommage des options. Il se trouve en effet que l’option de forçage la plus dangereuse se trouve être aussi la plus facile à saisir 🤦‍♂️ : la fameuse option --force.

Histoire d’enfoncer le couteau, la plupart des éditeurs, probablement en raison du fait que leurs devs n’ont pas été fichus de lire la doc’ en entier, proposent une option unique de forçage qui est le --force ! 🤦‍♂️🤦‍♂️

Pourtant, il existe une option dont le but est de garantir qu’on n’écrase pas un historique qui n’aurait pas été récupéré au préalable depuis le distant : --force-with-lease.

Cette option a tout intérêt à être combinée avec une seconde option --force-if-includes pour vérifier non seulement que l’état du dépôt distant a été récupéré mais aussi qu’il a été appliqué à notre historique local.

Plus simplement, ne fais plus de git push --force, sauf si c’est pour volontairement effacer un historique produit par un·e de tes collègues !
Préfère un git push --force-with-lease --force-if-includes. Et si c’est trop long à taper, fais-toi un alias :

git config --global alias.push-with-lease 'push --force-with-lease --force-if-includes'
Tu veux aller plus loin et maîtriser pleinement les fondamentaux de Git ou être accompagné pour garantir la qualité de tes projets grâce à une bonne mise en place de Git ? On peut t’aider ou te former, il suffit de nous décrire ton besoin !