Cuando uso git format-patch
, no parece incluir fusiones. ¿Cómo puedo realizar una fusión y luego enviarla por correo electrónico a alguien como un conjunto de parches?Git: ¿Cómo crear parches para una combinación?
Por ejemplo, digamos que puedo combinar dos ramas y realizar otra cometen en la parte superior de la fusión:
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"
Esto crea el siguiente árbol:
B
/ \
A M - D
\ /
C
ahora trato de partida de los Confirmación inicial y reproducción de los cambios anteriores:
git checkout -b replay master
git format-patch --stdout master..bar | git am -3
Esto produce un confl de fusión tic. En este escenario, git format-patch master..bar
solo produce 3 parches, omitiendo "Commit M". ¿Cómo trato con esto?
Geoffrey Lee
Es difícil probar que es negativo, pero me gusta, eché un vistazo a este problema y me da la sensación de que tienes razón. – JasonSmith
Sí, entiendo los problemas con los archivos de parche. Esperaba que hubiera una solución alternativa, porque uno supondría que los proyectos de Linux o Git se han encontrado con situaciones similares, y se basan completamente en enviar parches por correo electrónico en lugar de enviar/extraer. Voy a hacer ping a la lista de correo de Git y ver si tienen algún comentario adicional. Gracias. – geofflee
si en vez había sustituido a la línea de mezcla anterior con $ git merge --squash foo $ git commit -a -m "Commit M" su parche habría aplicado limpiamente ... – omnisis