A veces queremos incluir cambios que hicimos en nuestro repositorio, sea local o remoto, a otro repositorio de otra persona. Esto se puede hacer eligiendo los commits que contienen estos cambios y convertirlos en parches. Estos son simplemente archivos que diferencian un archivo de otro, linea por linea. Un parche puede enviarse por cualquier medio electronico, y el autor de otro repositorio puede aplicar dicho parche a su propio repositorio. Esta es una guia muy simple para crear y enviar estos parches.
En tu repositorio, haz las modificaciones y commits que vayas a enviar como parches. Pueden ser tantos como requieras.
Luego, configura las variables necesarias de send-email:
git config user.name <usuario> # Nombre del autor del commit
git config user.email <usuario>@texto-plano.xyz # Email del autor
git config sendemail.from "Usuario <usuario@texto-plano.xyz>" # Formato "From" para el correo
git config smtpuser <usuario> # Usuario en el servidor SMTP
git config smtpserver texto-plano.xyz # Servidor SMTP
git config smtpserverport 587 # Puerto del servidor
git config sendemail.smtpencryption tls # Encriptacion TLS para el servidor
git config sendemailsuppresscc self # Recomendable, evita enviarte el parche a ti mismo
Se pedira la contrasena del servidor en cada instancia, salvo que se
especifique la variable sendemail.smtppassword
(inseguro).
Luego, envia los commits que elijas con git send-email. En este caso, ‘-1’ elige el ultimo commit hecho desde HEAD. Es necesario especificar a quien enviarle los parches con ‘–to’.
git send-email -1 --to="Destinatario <destinatario@ejemplo.com>"
Si todo salio bien, el destinatario deberia tener todos los parches que elegiste en su casilla de correo.
Para crear un archivo .patch individual, se usa git format-patch. De nuevo, ‘-1’, por ejemplo, elige el ultimo commit. Con ‘-o’ se elige el directorio en el que van a quedar los parches.
git format-patch -1 -o /home/<usuario>
Esta herramienta es util por si se necesitan enviar los parches por otro programa de manera adjunta. Tambien puede generarse el parche para usarlo de argumento con send-email.
Mas informacion (en ingles):