¿Cómo se toma un archivo git diff y se aplica a una sucursal local que es una copia del mismo repositorio?

Resuelto Mike_K asked hace 12 años • 2 respuestas

Tengo un archivo .diff creado por un compañero de trabajo y me gustaría aplicar los cambios enumerados en ese archivo diff a mi sucursal local del mismo repositorio. No tengo acceso a la PC o rama de ese trabajador que se utilizó para generar este archivo de diferencias.

Obviamente podría ir línea por línea y volver a escribir todo, pero prefiero no someter el sistema a errores humanos. ¿Cuál es la forma más sencilla de hacer esto?

Mike_K avatar Sep 07 '12 22:09 Mike_K
Aceptado

Copie el archivo diff a la raíz de su repositorio y luego haga:

git apply yourcoworkers.diff

Más información sobre el applycomando está disponible en su página de manual .

Por cierto: una mejor manera de intercambiar confirmaciones completas por archivo es la combinación de los comandos git format-patchen el remitente y luego git amen el receptor, porque también transfiere la información de autoría y el mensaje de confirmación.

Si la aplicación del parche falla y si las confirmaciones desde las que se generó la diferencia están realmente en su repositorio, puede usar la -3opción que applyintenta fusionar los cambios.

También funciona con tuberías Unix de la siguiente manera:

git diff d892531 815a3b5 | git apply
Philipp avatar Sep 07 '2012 15:09 Philipp

Parece que también puedes usar el comando parche. Coloque la diferencia en la raíz del repositorio y ejecútela patchdesde la línea de comando.

patch -i yourcoworkers.diff

o

patch -p0 -i yourcoworkers.diff

Es posible que deba eliminar la estructura de carpetas principal si crearon la diferencia sin usar --no-prefix.

Si es así, puede eliminar las partes de la carpeta que no se aplican usando:

patch -p1 -i yourcoworkers.diff

-p(n) significa cuántas partes de la estructura de carpetas se eliminarán.

Más información sobre la creación y aplicación de parches aquí .

También puedes usar

git apply yourcoworkers.diff --stat 

para ver si la diferencia por defecto aplicará algún cambio. Puede decir 0 archivos afectados si el parche no se aplica correctamente (estructura de carpetas diferente).

1.21 gigawatts avatar Feb 04 '2021 08:02 1.21 gigawatts