¿Por qué dice que git "ambos se modificaron" al emitir el estado de git después del conflicto?

Al tener un conflicto en un file al intentar fusionarlo en git, git dice que both modified en el file que tiene un conflicto como este:

 $ git status On branch master You have unmerged paths. (fix conflicts and run "git commit") Unmerged paths: (use "git add <file>..." to mark resolution) both modified: file1 no changes added to commit (use "git add" and/or "git commit -a") 

No estoy seguro de por qué exactamente " ambos modificaron". ¿Alguien de ustedes sabe?

Solutions Collecting From Web of "¿Por qué dice que git "ambos se modificaron" al emitir el estado de git después del conflicto?"

Esto vuelve a Git 1.6.5 (octubre de 2009) y confirma 4d4d572 , que introdujo este post más detallado:

status : muestra el estado del tree de trabajo de las routes en conflicto por separado

Cuando una ruta no está fusionada en el índice, solíamos decir siempre "no fusionada" en la sección "Modificado pero no actualizado", incluso cuando la ruta se eliminó en el tree de trabajo.

Elimine las inputs no fusionadas de la sección "Actualizada" y cree una nueva sección "Rutas no fusionadas". Describa cómo las diferentes etapas entran en conflicto con más detalle en esta nueva sección.

Como puede ver en este parche, "ambos modificados" (en ambos padres) no es el único caso de conflicto.

 case 1: how = "both deleted:"; break; case 2: how = "added by us:"; break; case 3: how = "deleted by them:"; break; case 4: how = "added by them:"; break; case 5: how = "deleted by us:"; break; case 6: how = "both added:"; break; case 7: how = "both modified:"; break; 

Verá más casos en commit 173e6c8 , con git status -s :

Para inputs no fusionadas,

  • X muestra el estado de la etapa n. ° 2 (es decir, la ours ) y
  • Y muestra el estado de la etapa n. ° 3 (es decir, la theirs ).
 XY Meaning ------------------------------------------------- DD unmerged, both deleted AU unmerged, added by us UD unmerged, deleted by them UA unmerged, added by them DU unmerged, deleted by us AA unmerged, both added UU unmerged, both modified 

Eso ilustra el hecho de que un índice en git tiene 3 etapas (ver " ¿Cómo fuerzo a git a pensar que un file no está migrado? ")

En el file Git que tiene una fusión, los conflictos tienen (normalmente) tres versiones en el índice y una versión en el área de trabajo con diff3 -E / marcadores de conflicto rcsmerge .

  • Las versiones en el índice son la etapa 1 del ancestro común,
  • etapa 2 para "nuestra" versión, y
  • etapa 3 para la versión "suya".

Para files no fusionados no hay ninguna versión en la etapa 0

Aquí, "ambos modificados" están "modificados en 'nuestro' y 'de ellos'.