usar una tag remote qué pushing podemos para hacer etiqueta create crear como comando git patch

una - git crear parche con diff



git-- tags (4)

Intenté hacer

git diff 13.1_dev sale_edit > patch.diff

Entonces traté de hacer git apply patch.diff en otra rama, pero el parche no se aplica. ¿Cómo creo archivos de parche de diffs que puedo usar con git apply?

Errores recibidos:

$ git apply --ignore-space-change --ignore-whitespace diff.diff diff.diff:9: trailing whitespace. diff.diff:10: trailing whitespace. function set_change_sale_date() diff.diff:12: space before tab in indent. $this->sale_lib->set_change_sale_date($this->input->post(''change_sale_date'')); diff.diff:14: trailing whitespace. diff.diff:15: trailing whitespace. function set_change_sale_date_enable() warning: application/controllers/sales.php has type 100755, expected 100644 error: patch failed: application/controllers/sales.php:520 error: application/controllers/sales.php: patch does not apply warning: application/language/english/sales_lang.php has type 100755, expected 100644 error: patch failed: application/language/english/sales_lang.php:134 error: application/language/english/sales_lang.php: patch does not apply warning: application/libraries/Sale_lib.php has type 100755, expected 100644 error: patch failed: application/models/sale.php:170 error: application/models/sale.php: patch does not apply warning: application/views/sales/register.php has type 100755, expected 100644 error: patch failed: application/views/sales/register.php:361 error: application/views/sales/register.php: patch does not apply

Estoy intentando esto en Mac


Aquí tienes que probarlo con la rama con la que tienes diferencias.

git diff 13.1_dev sale_edit > patch.diff yourBranch()


Con git versión 1.9.1, estoy viendo quejas similares cuando uso ''git apply'' para aplicar el parche creado usando ''git diff''.

Parece que 1.9.1 git tiene problemas para tratar la mezcla de espacios y pestañas en el archivo de parche.

warning: squelched 1 whitespace error warning: 6 lines add whitespace errors.

La respuesta de @VonC no ayuda y sigo recibiendo las mismas advertencias.

La solución más fácil es simplemente usar el comando '' parche '' que aplica con éxito todos los cambios capturados en la salida ''git diff'' al directorio de git de destino.

$ patch --version GNU patch 2.7.1


Prueba un:

git apply --ignore-space-change --ignore-whitespace patch.diff

Como se menciona en " git: el parche no se aplica ", esto puede deberse a:

  • las terminaciones de línea difieren entre el sistema de archivos local y el repositorio remoto.
    El usuario core.eol en el archivo .gitattributes es un buen enfoque (ver " git force file encoding on commit ")
  • el bit de ejecución ('' x '').
    Eso puede llevarlo a configurar git config core.filemode false , seguido de un git reset --hard HEAD (asegúrese de no tener cambios no confirmados, o se perderían).

Puede aplicar el parche como una combinación de 3 vías:

git diff 13.1_dev sale_edit > patch.diff git apply -3 patch.diff

Debería mostrar el conflicto para que pueda resolverlo manualmente. O puede ir con un trazador de líneas, conectando el parche a git-aplicar directamente:

git diff 13.1_dev sale_edit | git apply -3

Para invertir el parche:

git diff 13.1_dev sale_edit | git apply -3 -R

(nota: esto es igual que los comandos anteriores, sin el proceso de dos etapas para crear el archivo de parche)

git help apply -3, --3way When the patch does not apply cleanly, fall back on 3-way merge if the patch records the identity of blobs it is supposed to apply to, and we have those blobs available locally, possibly leaving the conflict markers in the files in the working tree for the user to resolve...