trucos tag sirven ramas que para name las hace commits commands comentarios git git-diff git-add git-patch

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 .