Lorsque j'utilise git format-patch
, il ne semble pas inclure de fusions. Comment puis-je effectuer une fusion, puis l'envoyer par e-mail à quelqu'un sous la forme d'un ensemble de correctifs?Git: Comment créer des correctifs pour une fusion?
Par exemple, disons que je fusionner deux branches et d'effectuer une autre commettras au-dessus de la fusion:
git init
echo "initial file" > test.txt
git add test.txt
git commit -m "Commit A"
git checkout -b foo master
echo "foo" > test.txt
git commit -a -m "Commit B"
git checkout -b bar master
echo "bar" > test.txt
git commit -a -m "Commit C"
git merge foo
echo "foobar" > test.txt
git commit -a -m "Commit M"
echo "2nd line" >> test.txt
git commit -a -m "Commit D"
Cela crée l'arborescence suivante:
B
/ \
A M - D
\ /
C
Maintenant, j'essaie de caisse de la validation initiale et rejouer les changements ci-dessus:
git checkout -b replay master
git format-patch --stdout master..bar | git am -3
Ceci produit un confl fusion ict. Dans ce scénario, git format-patch master..bar
ne produit que 3 patches, en omettant "Commit M". Comment puis-je faire face à cela?
-Geoffrey Lee
Il est difficile de prouver un négatif, mais comme si, j'ai pris un problème à ce problème et j'ai l'impression que vous avez raison. – JasonSmith
Oui, je comprends les problèmes avec les fichiers de correctifs. J'espérais qu'il y aurait une solution de rechange, car on supposerait que les projets Linux ou Git ont rencontré des situations similaires, et ils dépendent entièrement de soumettre des correctifs par e-mail plutôt que de pousser/tirer. Je vais faire un ping sur la liste de diffusion Git et voir s'ils ont des commentaires supplémentaires. Merci. – geofflee
si vous aviez remplacé à la place de la ligne de fusion ci-dessus avec $ git merge --squash foo $ git commit -a -m "Commit M" votre patch aurait appliqué proprement ... – omnisis