tag - Utilice el algoritmo de diferencia de paciencia de Git para agregar interactivos
para que sirven las ramas git (3)
Esto funcionó para mí:
git -c diff.algorithm=patience add -p [...]
Estoy ejecutando el último git v2.1.0 en Cygwin.
Me gustaría usar el algoritmo de diferencia de paciencia de Git (el que obtienes si --patience
git diff
con el argumento --patience
) con git add -p
. ¿Cómo puedo hacer esto?
Antecedentes: estoy trabajando con algunos archivos XML, y el algoritmo normal de git diff
produce diferencias bastante pobres debido a las etiquetas de entrada / salida "desalineadas" . Si ejecuto git diff --patience
, git diff --patience
mucho más útiles, pero no hay una forma obvia de usar estas diferencias en git add -p
.
Hmmmm ... Una cosa que podrías hacer es canalizar la salida de git diff
a un lugar temporal, luego leerlo nuevamente con git apply
:
git diff --patience <commitA> <commitB> > /tmp/patch.out
# checkout a new branch or otherwise do what you need to prep
git apply < /tmp/patch.out
Eso aplicará la salida del diff al directorio de trabajo, pero no confirmará ni realizará las modificaciones. Luego puede ejecutar git add -p
como lo haría normalmente, y la diferencia de --patience
será los cambios que está agregando interactivamente.
No hay ninguna razón por la que no pueda canalizar diff
para apply
directamente, si se adapta mejor a su flujo de trabajo. Es algo que hago con bastante regularidad al reconstruir mis propias sucursales locales para la integración de la producción.
Parece que también puedes usarlo como una estrategia de combinación, por lo que podría ser el caso de que, en lugar de agregar de manera interactiva los diffs, simplemente puedas crear una rama con lo que quieras y luego fusionarla.
git add -p
actualmente rechaza las diff.algorithm
diferencia, pero puede usar la opción de configuración diff.algorithm
:
git config --global diff.algorithm patience
Nuevo en Git 1.8.2 .