Ta question est pertinente et, si c'est à moi que tu poses cette question, je répète, je n'ai pas la solution, n'étant pas non plus un fin connaisseur de Git. Je ne pourrai être certain d'y répondre proprement que lorsque j'aurai du temps à y consacrer.
Ceci dit, on est peut-être en train de chercher midi à quatorze heures. En y réfléchissant quelques secondes de plus, si je te suggères de demander à Git de te renvoyer un patch complet correspondant à la liste des modifications de la branche A (genre git diff ), puis que tu appliques ce patch à "l'envers" (commande patch -r), as-tu ta réponse?
En somme:
git diff a1 a3 > correctif.diff
patch -r < correctif.diff
# ... ensuite les commits d'usage
Voire mieux:
git diff a3 a1 > correctif.diff
patch < correctif.diff
# ... ensuite les commits d'usage
Ou encore:
git diff a3 a1 | patch
# ... ensuite les commits d'usage
L'avantage est que 1) tu n'as pas à annuler quoi que ce soit (c'est quoi "annuler", d'ailleurs?), 2) il n'est pas nécessaire de ré-écrire l'historique (puisque c'est "mal") si le dépôt public a été modifié et 3) tous les dépôts restent cohérents. Au final, je vois ladite annulation comme une opération de plus.
Et on fait ça avec Git en une seule commande et une seule ligne. À condition que j'aie bien compris ta question, cela va de soi. Je n'ai pas parlé de l'argument "--dry-run" avant d'appliquer un correctif mais prudence oblige, bien entendu.
Est-ce que cette proposition répond à ta question?
[^] # Re: Soit j'ai rien compris soit...
Posté par FantastIX . En réponse à la dépêche Pijul, contrôle de version et théorie des patchs, version 0.12. Évalué à 3. Dernière modification le 05 mai 2019 à 11:43.
Ta question est pertinente et, si c'est à moi que tu poses cette question, je répète, je n'ai pas la solution, n'étant pas non plus un fin connaisseur de Git. Je ne pourrai être certain d'y répondre proprement que lorsque j'aurai du temps à y consacrer.
Ceci dit, on est peut-être en train de chercher midi à quatorze heures. En y réfléchissant quelques secondes de plus, si je te suggères de demander à Git de te renvoyer un patch complet correspondant à la liste des modifications de la branche A (genre git diff ), puis que tu appliques ce patch à "l'envers" (commande patch -r), as-tu ta réponse?
En somme:
Voire mieux:
Ou encore:
L'avantage est que 1) tu n'as pas à annuler quoi que ce soit (c'est quoi "annuler", d'ailleurs?), 2) il n'est pas nécessaire de ré-écrire l'historique (puisque c'est "mal") si le dépôt public a été modifié et 3) tous les dépôts restent cohérents. Au final, je vois ladite annulation comme une opération de plus.
Et on fait ça avec Git en une seule commande et une seule ligne. À condition que j'aie bien compris ta question, cela va de soi. Je n'ai pas parlé de l'argument "--dry-run" avant d'appliquer un correctif mais prudence oblige, bien entendu.
Est-ce que cette proposition répond à ta question?