git diff patch

¿Cómo aplicar el parche `git diff` sin Git instalado?



patch (5)

¿Cómo puede mi cliente aplicar el parche creado por git diff sin git instalado? He intentado usar el comando patch pero siempre pide el nombre del archivo al parche.


Prueba esto:

$ git apply file.diff


Utilizar

git apply patchfile

si es posible.

patch -p1 < patchfile

tiene efectos secundarios potenciales

git apply también maneja los archivos agregados, eliminados y renombrados si están descritos en el formato git diff , que patch no sirve. Finalmente, git apply es un modelo de "aplicar todo o abortar todo" en el que todo se aplica o nada, mientras que el parche puede aplicar parcialmente los archivos de parche, dejando su directorio de trabajo en un estado extraño.


prueba esto:

patch -p1 < patchfile


yo suelo

patch -p1 --merge < patchfile

De esta manera, los conflictos pueden resolverse como de costumbre.


git diff > patchfile

y

patch -p1 < patchfile

funciona, pero como mucha gente notó en los comentarios y otras respuestas, el parche no entiende agrega, elimina y cambia el nombre. No hay opción, pero git apply patchfile si necesita manejar el archivo agrega, elimina y cambia el nombre.

EDITAR diciembre 2015

Las últimas versiones del comando patch (2.7, lanzado en septiembre de 2012) son compatibles con la mayoría de las funciones del formato "diff --git", incluidos los cambios de nombre y copia, los cambios de permisos y los diffs de enlaces simbólicos (pero todavía no binarios) ( anuncio de lanzamiento ).

Por lo tanto, siempre que se use una versión actual / última del patch no es necesario usar git para poder aplicar su diff como parche.