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 usuariocore.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 configurargit config core.filemode false
, seguido de ungit 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...