Cómo evitar que Git automatice líneas particulares con cambios iguales

Dado que tiene un file con un número de versión que se incrementa en dos twigs, ¿cómo evitar que Git automatice silenciosamente las dos líneas cambiando las líneas que definen la versión?

* Git automatically merges here, but shouldn't |\ | * change same line to the same new text * | change some line here \| * prior history/root commit 

En nuestro caso, tenemos un esquema de database con soporte de migration. Nuestro file de esquema principal define la versión de esquema actual. Si dos personas cambian el esquema, por ejemplo, agregan una columna de database, en tablas diferentes y ambas aumentan la versión del esquema en +1. Git fusionará todo de forma silenciosa pero el resultado se romperá.

Sugiero tener un marcador especial para agregar en cualquier línea que haga que Git no automatice esta línea en particular. ¿Hay alguna característica como esta que no sé o cómo podría lograrse?

Aquí hay una list de commands de shell para crear un ejemplo de historial de Git que ilustra el problema:

 $ git init test Initialized empty Git repository in $PWD/test/.git/ $ cd test/ $ echo "version 1" > file $ git add file $ git commit -m "add file v1" [master (root-commit) 4ef6950] add file v1 1 file changed, 1 insertion(+) create mode 100644 file $ git checkout -ba Switched to a new branch 'a' $ echo "version 2" > file $ git commit -a -m "bump to v2" [a 85dba39] bump to v2 1 file changed, 1 insertion(+), 1 deletion(-) $ git checkout -bb master Switched to a new branch 'b' $ echo "version 2" > file $ git commit -a -m "bump to v2 in b" [b b0fcf46] bump to v2 in b 1 file changed, 1 insertion(+), 1 deletion(-) $ git merge a Merge made by the 'recursive' strategy. $ git status # shouldn't be clean On branch b nothing to commit, working directory clean 

No creo que lo que pidas sea posible.
Un cambio idéntico es un cambio idéntico es un cambio idéntico.

Hay dos cosas que le vienen a la mente cómo podría solucionar su problema:

  1. Haga que los desarrolladores mantengan un comentario en la misma línea que contenga algo único, por ejemplo, el time actual hasta el segundo, el time de Unix, … Algo que es poco probable en ambas twigs cuando se cambia el file (no use algo específico para el usuario, un usuario podría hacer ambos cambios y olvidarse de ellos)

  2. Use un gancho de precompromiso. En el gancho compruebe si la confirmación es una confirmación de fusión y luego intente determinar si existe la situación que describió, en la que ambas twigs cambiaron esa línea y abortar la fusión en este caso.

Esto suena como un problema de process más que un problema con git. Debe hacer todo lo posible para evitar hacer exactamente el mismo cambio de text en varias confirmaciones. Esto ayudará a evitar confusiones en el historial de cometidos durante las expediciones arqueológicas posteriores. Debería encontrar maneras de realizar los cambios en su esquema de database sin dicha repetición en su historial de versiones.