tag - git sign commits
¿Debo realizar una combinación para hacer que git-rerere grabe mi resolución de conflictos? (2)
¿Basta con poner en escena los archivos en conflicto?
Debe asegurarse de resolver el conflicto sin dejar marcadores de conflicto.
Consulte commit f427869 , commit bc4caec (28 de agosto de 2018) de Thomas Gummerer ( tgummerer
) .
Sugerido por: Junio C Hamano ( gitster
) .
(Fusionada por Junio C Hamano - gitster
- in commit d88949d , 17 de septiembre de 2018)
Ver commit b9b07ef (28 de agosto de 2018) de Thomas Gummerer ( tgummerer
) .
Ayudado por: Junio C Hamano ( gitster
) .
(Fusionada por Junio C Hamano - gitster
- in commit 4dd0c4a , 17 de septiembre de 2018)
.gitattributes
: agrega un tamaño de marcador de conflicto para los archivos relevantesAlgunos archivos en
git.git
contienen líneas que parecen marcadores de conflicto, ya sea en ejemplos o pruebas, o en el caso deDocumentation/gitk.txt
debido al encabezado asciidoc.Tener marcadores de conflicto de la misma longitud que el contenido real puede ser confuso para los humanos, y es imposible de manejar para herramientas como ''
git rerere
'' .Para evitarlo, establezca el atributo ''
conflict-marker-size
'' para esos archivos en 32, lo que hace que los marcadores de conflicto no sean ambiguos.
Estoy usando git-rerere
para el propósito previsto, para registrar las resoluciones de conflicto entre dos ramas (una rama maestra y otra temática) a medida que esas ramas se desarrollan, sin crear confirmaciones de fusión innecesarias. Sin embargo, incluso después de leer la página de manual de git-rerere no tengo mucha certeza cuando rerere realmente graba mi resolución de conflictos. Mi flujo de trabajo estándar para detectar y resolver nuevos conflictos de combinación es hacer git merge master
desde la rama del tema, resolver los conflictos, luego organizar todos los archivos y realizar la fusión con git commit -m "Finished test merge"
, y luego deshacer la fusión usando git reset --hard HEAD^
, dejando atrás solo las resoluciones grabadas almacenadas por git-rerere
.
Sin embargo, esto parece un poco tonto. ¿Creando un commit y luego deshaciéndolo solo para grabar la resolución? Después de leer la página del manual de git-rerere
, todavía no tengo muy claro cuándo registra mis resoluciones. ¿Es suficiente simplemente poner en escena los archivos en conflicto o realmente necesito crear el compromiso de fusión después de resolver los conflictos, como he estado haciendo?
De la página del manual:
Running the git rerere command immediately after a conflicted automerge
records the conflicted working tree files, with the usual conflict
markers <<<<<<<, =======, and >>>>>>> in them. Later, after you are
done resolving the conflicts, running git rerere again will record the
resolved state of these files.
Y:
As a convenience measure, git merge automatically invokes git rerere
upon exiting with a failed automerge and git rerere records the hand
resolve when it is a new conflict, or reuses the earlier hand resolve
when it is not. git commit also invokes git rerere when committing a
merge result. What this means is that you do not have to do anything
special yourself (besides enabling the rerere.enabled config variable).
Así que no tienes que comprometer y deshacer el compromiso. Simplemente puede ejecutar git rerere
sin parámetros para registrar el commit.