¿Cómo puede mi cliente aplicar el parche creado por git diff
sin git instalado? Intenté usar el patch
comando pero siempre pide el nombre del archivo para parchear.
patch
no es totalmente compatible con este formato.
¿Cómo puede mi cliente aplicar el parche creado por git diff
sin git instalado? Intenté usar el patch
comando pero siempre pide el nombre del archivo para parchear.
patch
no es totalmente compatible con este formato.
Respuestas:
git diff > patchfile
y
patch -p1 < patchfile
funciona, pero como mucha gente notó en los comentarios y otras respuestas, el parche no comprende las adiciones, eliminaciones y cambios de nombre. No hay opción, pero git apply patchfile
si necesita manejar el archivo agrega, elimina y renombra.
EDITAR Diciembre 2015
Las versiones más recientes del patch
comando (2.7, lanzadas en septiembre de 2012) admiten la mayoría de las características del formato "diff - git", incluyendo cambios de nombre y copias, cambios de permisos y diferencias de enlaces simbólicos (pero aún no diferencias binarias) ( anuncio de lanzamiento ).
Por lo tanto, siempre que se use la versión actual / más reciente de patch
no hay necesidad de usar git
para poder aplicar su diff como un parche.
git diff > patchfile
, peropatch -p1 < patchfile
relative
opción como:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfile
No requiere git instalado. El primer comando muestra el comando para generar diff, no aplicarlo.
git diff from_branch > patchfile; git checkout from_branch; git patch -p1 < patchfile
ogit diff from_branch to_branch > patchfile; ...
Utilizar
git apply patchfile
si es posible.
patch -p1 < patchfile
tiene un posible efecto secundario.
git apply
también se encarga de agregar, eliminar y renombrar archivos si se describen en el git diff
formato, lo patch
que no funcionará. Finalmente, git apply
es un modelo de "aplicar todo o abortar todo" donde se aplica todo o nada, mientras que el parche puede aplicar parcialmente los archivos de parche, dejando su directorio de trabajo en un estado extraño.
git apply
es la mejor manera de hacerlo, pero esta pregunta específicamente pregunta cómo aplicar el parche sin Git instalado .
--dry-run --verbose
son útiles para determinar cuáles serán los efectos secundarios, si los hay. (usando el parche v2.5.8)
git apply patchfile -
... la única respuesta sensata ..." - eso es casi ridículo. Cada vez que los desarrolladores de OpenSSL me envían un parche para probar, Git no puede aplicarlo. Eso es todo el tiempo. Todavía tengo que ver que esa estúpida herramienta aplique un parche.
yo suelo
patch -p1 --merge < patchfile
De esta manera, los conflictos pueden resolverse como de costumbre.