¿Cómo puede mi cliente aplicar el parche creado por git diffsin git instalado? Intenté usar el patchcomando pero siempre pide el nombre del archivo para parchear.
patchno es totalmente compatible con este formato.
¿Cómo puede mi cliente aplicar el parche creado por git diffsin git instalado? Intenté usar el patchcomando pero siempre pide el nombre del archivo para parchear.
patchno 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 patchfilesi necesita manejar el archivo agrega, elimina y renombra.
EDITAR Diciembre 2015
Las versiones más recientes del patchcomando (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 patchno hay necesidad de usar gitpara poder aplicar su diff como un parche.
git diff > patchfile, peropatch -p1 < patchfile
relativeopción como:git diff --no-prefix --relative=my/relative/path > patchfile
patch -p1 < patchfileNo 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 < patchfileogit diff from_branch to_branch > patchfile; ...
Utilizar
git apply patchfile
si es posible.
patch -p1 < patchfile
tiene un posible efecto secundario.
git applytambién se encarga de agregar, eliminar y renombrar archivos si se describen en el git diffformato, lo patchque no funcionará. Finalmente, git applyes 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 applyes la mejor manera de hacerlo, pero esta pregunta específicamente pregunta cómo aplicar el parche sin Git instalado .
--dry-run --verboseson ú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.