2011-12-29 10 views
14

Estoy probando el uso de git-subtree para fusionar un repositorio de biblioteca en un proyecto más grande. Parece genial en principio. A veces, cuando hago un "git subárbol tirón" consigo conflictos de combinación de esta manera:informes de git fusionar el conflicto sin cambios, líneas vacías (usando git-subárbol)

<<<<<<< HEAD 
======= 
An inserted line from the lib repo 
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d 

Eso es un cambio que se hizo en el repositorio de la biblioteca, la fusión en un archivo que no se ha modificado localmente. Otro ejemplo, cuando he añadido una línea en el repositorio local del proyecto, pero en un archivo que forma parte del subárbol que se están combinando:

<<<<<<< HEAD 
Another inserted line 
======= 
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d 

Por qué sería GIT informe de inmediato como los conflictos de fusión, pero la región presentan como la el conflicto está vacío? ¿Alguna forma de prevenirlo?

Estos son bastante fáciles de resolver, pero ya que se rompe el flujo de trabajo git-subárbol

+0

Asegúrate de que las terminaciones de tus líneas sean las mismas en todos los repositorios (Linux, Windows, Mac) – knittl

+0

Creo que se ha producido (en el segundo ejemplo) cuando el archivo cambiado localmente tiene una fecha de modificación mayor que la de la versión fusionada. –

Respuesta

-3

Use submódulos para sostener el trabajo compartido. Hay git-slave si trabajas mucho con proyectos compartidos y no compartidos que deben coordinarse. La línea que termine la disparidad de almacenamiento desaparecerá.

+0

Por favor, agrega comentarios para el voto a favor. –

+0

Downvoted porque pregunté sobre el uso de git-subárbol, no cómo usar submódulos. Y no hay evidencia de que esto tenga algo que ver con los finales de línea –

+0

Sí correcto. Leí mal. –

1

No es una solución a su problema de raíz, sino más bien una mitigación de la misma. puede usar
git merge -Xignore-space-change para ignorar los cambios de espacio en sus confirmaciones.

Probablemente sea un problema con las terminaciones de su línea. puede probar una alternativa --dry-run en fusión (git merge no tiene --dry-run opción):

$git merge -Xignore-space-change --no-commit --no-ff $BRANCH

para ver los cambios antes de que realmente se compromete ellos.

Cuestiones relacionadas