💾 Archived View for thasmanie.fr › git-apply.gmi captured on 2021-11-30 at 20:18:30. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
2020-06-24
Pendant longtemps je galérais toujours pour rollbacker des modifs sur un projet git. En effet git revert est vraiment pas intuitif, et en demandant autour de moi, au final peu de personnes pouvaient expliquer comment l'utiliser, et personne pour l'expliquer simplement.
D'après ce que j'ai compris, c'est simple pour 2 ou 3 commits à rollbacker, par contre quand yen a une vingtaine, faut compter le nombre exact pour bien se placer, etc... Si une personne sait l'expliquer simplement, je suis prenneur :)
Et un jour, sur stackoverflow (j'ai perdu le lien, désolé), je suis tombé sur une réponse qui m'a changé la vie :)
Donc imaginons qu'on connait le commitID exact (avec `git log`) de la dernière bonne version (en gros, on veut retourner à cet endroit exact).
Et bien il suffit de faire :
git diff HEAD <dernierBonCommit> | git apply
La première partie (`git diff HEAD <dernierBonCommit>`) va sortir sur stdout le diff complet entre votre HEAD actuel et du commit donné.
Le `git apply` va appliquer ce diff à votre copie locale, un peu comme la commande `patch`.
On se retrouve maintenant avec un repo local qui contient les modifications exactes pour revenir là où on voulait !
Il reste à faire un `git add ...` et un `git commit` avec un beau message comme "rollback de mes dernières bouses", et un `git push` pour finir :)
Il est bien sûr toujours possible d'annuler ce rollback grâce au commitID précédent... Ne pas oublier : `git commit -m "rollback du rollback`