¿Cómo aplicar el parche 'git diff' sin Git instalado?
¿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 para parchear.
5 answers
git diff > patchfile
Y
patch -p1 < patchfile
Trabajo, pero como muchas personas notaron en los comentarios y otras respuestas parche no entiende añade, elimina y cambia de nombre. No hay otra opción que git apply patchfile
si necesita agregar, eliminar y renombrar el archivo handle.
EDIT Diciembre de 2015
Las últimas versiones del comando patch
(2.7, lanzado en septiembre de 2012) admiten la mayoría de las características del formato "diff git git", incluidos los cambios de nombre y copias, los cambios de permisos y las diferencias de enlaces simbólicos (pero no yet binary diffs) (release announcement).
Así que siempre que se use la versión actual/última de patch
no hay necesidad de usar git
para poder aplicar su diff como un parche.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-09 16:17:19
Prueba esto:
patch -p1 < patchfile
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-24 12:59:29
Use
git apply patchfile
Si es posible.
patch -p1 < patchfile
Tiene un efecto secundario potencial.
git apply
también se encarga de agregar, eliminar y renombrar archivos si se describen en el formato git diff
, lo que patch
no hará. Finalmente, git apply
es un modelo "aplicar todo o abortar todo" donde se aplica todo o nada, mientras que patch puede aplicar parcialmente archivos de parches, dejando su directorio de trabajo en un estado extraño.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-01 08:12:57
Utilizo
patch -p1 --merge < patchfile
De esta manera, los conflictos pueden resolverse como de costumbre.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-12 05:05:39
Prueba esto:
$ git apply file.diff
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-12 01:09:56