¿Cuándo tendrá conflicto git rebase?

Sep 28 2020

He estado leyendo varias publicaciones en este foro, progit, Youtube y algunos blogs aleatorios para rebase.

La forma más general de concluir este tema es:

- A - B - C   Master
   \  D - E Topic

y realizo:

git checkout Topic
git rebase Master

Idealmente, sería:

- A - B - C - D' - E' Master, Topic

Pero las 2 preocupaciones son:

  1. ¿Es D '= D, E' = E?
  2. ¿Qué es el conflicto de git rebase?

En cuanto a la primera preocupación y este post ,

  1. Rebase se fusiona en D y E, y sobre todo, con entrada complicada.

Por ejemplo, cuando va a D, según el post y si estoy en lo cierto

  1. CABEZA separada a C
  2. Git compara los cambios de A a D y los cambios de A a C
  3. Después de la fusión, git compara entre D ', D y E

Y esto me confunde más. ¿Por qué la fusión implica más de 2 confirmaciones? Además, ¿cómo aparece un conflicto?

EDITAR:

Ejecutó algunos comandos, consulte lo siguiente:

git init

Se creó un contenido Random.txt: Master 1

git add Random.txt
git commit -m "Master 1"

Crear nueva rama

git checkout -b rebase_conflict

Modificar el contenido de Random.txt: 1

git add Random.txt
git commit -m "Conflict 1"

Alter Random. Contenido txt: 2

git add Random.txt
git commit -m "Conflict 1"

Cambiar a maestro

git checkout master

Modificar el contenido de Random.txt: Master 2

git add Random.txt
git commit -m "Master 2"

Cambiar de rama y rebase

git checkout rebase_conflict
git rebase master

Obtener error de conflicto Alter Random.txt Contenido: 1

git add Random.txt
git rebase --continue

En este punto, espero otro conflicto de rebase, porque según la lógica

-- Master 1 -- Master 2
  \ -- Conflict 1 -- Conflict 2

Después del primer rebase

-- Master 1 -- Master 2 -- Conflict 1'
 \ -- Conflict 1 -- Conflict 2

En esta etapa, espero un nuevo compromiso además del Conflicto 1 '. ¿No hay un conflicto de fusión entre el Conflicto 2 y el Conflicto 1 '?

Porque Conflict 1 'contenido Random.txt: 1, mientras que

Conflicto 2 Contenido Random.txt: 2

Cambian la misma línea, ¿no?

Respuestas

TimBiegeleisen Sep 28 2020 at 20:27

La fusión o la reorganización en el ejemplo anterior pueden provocar conflictos de fusión. Es posible que solo uno u otro también tenga conflictos. Para comprender qué hace el rebase, considere el siguiente diagrama que muestra cómo Topicse vería después del rebase en Master:

Topic:  -- A -- B -- C -- D' -- E'

Aquí los apóstrofos indican que las confirmaciones Dy Ese han vuelto a aplicar a la nueva base de Master. A medida que se vuelve a aplicar cada confirmación, existe la posibilidad de que se produzcan conflictos de fusión. Entonces, en el caso de volver a aplicar N confirmaciones, podría haber N conjuntos de conflictos de fusión. Por otro lado, una fusión siempre daría como resultado como máximo un conjunto de conflictos de fusión. Si esto le preocupa, entonces podría preferir fusionar en lugar de reajustar.