linux - tag - musicbrainz picard debian
Cherry-pick con ignorar espacios en blanco/finales de lĂnea (2)
Entonces, para completar, la respuesta es que la estrategia de combinación ignore-all-space
hace el trabajo:
git cherry-pick -X ignore-all-space <commit-id>
Y eso le permitirá seleccionar sin esfuerzo las confirmaciones hechas cuando el archivo tenía, por ejemplo, los finales de línea de Windows en una versión que tiene finales de archivos Unix.
¿hay alguna manera de decirle a git cherry-pick
que use la estrategia de fusión renormalize
? No estoy seguro de que la opción -X
esté funcionando.
Tengo un montón de confirmaciones que parecen asumir un tipo de final de línea, y estoy tratando de aplicarlas a una rama que asume otra. No pasar un buen rato ...
Sé que esta pregunta es significativamente antigua, pero agregando esta respuesta porque esta es la primera publicación de Google "git cherry-pick ignore whitespace".
Aunque -X ignore-all-space
funciona bien, debe verificar manualmente la confirmación si la opción de selección de cerebros sin ignorar tuvo algunos conflictos. (o use --no-commit
mientras Cherry-picking y git diff --staged
para revisarlo)
En algunos casos, la opción -X ignore-all-space
ve bien, pero algunas sangrías son incorrectas.
Por ejemplo, suponga que tuvo algún conflicto de fusión con los espacios en blanco iniciales sin utilizar ignorar todo el espacio, como esto:
Change from theirs, Indent level 1(no conflict with/out whitespace)
<<<<< HEAD
Indent level 0
=====
Indent level 1 without any code change
>>>>> cherry-picked commit
En este caso, -X ignore-all-space
no muestra conflicto, pero la confirmación real se verá así:
Change from theirs, indent level 1
Indent level 0
Lo que sucedió aquí es que cambiaron la lógica, por lo que el código anterior (nivel de sangría 0) debe ser sangrado al nivel 1, pero no porque se especificó la opción ignorar- todo- espacio.
Así que el tl; dr es:
-
-X ignore-all-space
opción-X ignore-all-space
también ignora los espacios en blanco iniciales, lo que puede ser problemático en algunas situaciones e idiomas como Python. - Así que tienes que revisar manualmente después de usar esa opción, o ...
- En su lugar, use
-X ignore-space-at-eol
y maneje los conflictos de espacios en blanco iniciales manualmente.
Pero no deje de leer, ya que estas opciones no son la razón principal de estos problemas: el núcleo de este problema es que no todos se adhieren a las mismas reglas de espacio en blanco.
Para espacios en blanco iniciales y finales: use herramientas de alineación o IDE, o lo que sea para atenerse a las mismas reglas. Esto no es específico del sistema operativo y se puede seguir si su equipo hace un esfuerzo para facilitar la vida de otros desarrolladores.
Para cambios en eol: esto es específico del sistema operativo, pero afortunadamente Git es compatible con core.autocrlf y core.eol para el desarrollo de desarrollo multiplataforma. ver git-scm para más detalles.