Git fusiona conflictos cuando no se realizan cambios

5 minutos de lectura

Avatar de usuario de René Kolařík
René Kolařík

He clonado un repositorio y luego, después de unas horas, he hecho ‘git pull’. Sin embargo, aparecieron conflictos de fusión y no entiendo por qué, porque no he realizado ningún cambio en el repositorio clonado.

git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean


git pull
remote: Counting objects: 6211, done.
remote: Compressing objects: 100% (849/849), done.
remote: Total 3237 (delta 2756), reused 2846 (delta 2371)
Receiving objects: 100% (3237/3237), 865.51 KiB | 152.00 KiB/s, done.
Resolving deltas: 100% (2756/2756), completed with 867 local objects.
From git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next
 + 76c2c6d...4d046e9 master     -> origin/master  (forced update)
 + 1e13928...003e6ba akpm       -> origin/akpm  (forced update)
 + 9d1d11d...8bcfe39 akpm-base  -> origin/akpm-base  (forced update)
   37504a3b..8ba4caf stable     -> origin/stable
 * [new tag]         next-20140918 -> next-20140918
Performing inexact rename detection: 100% (318500/318500), done.
Auto-merging tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
CONFLICT (content): Merge conflict in tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
Auto-merging tools/testing/selftests/rcutorture/configs/rcu/TREE03
Auto-merging localversion-next
CONFLICT (add/add): Merge conflict in localversion-next
Auto-merging kernel/rcu/tree.c
CONFLICT (content): Merge conflict in kernel/rcu/tree.c
Auto-merging drivers/target/target_core_fabric_configfs.c
CONFLICT (content): Merge conflict in drivers/target/target_core_fabric_configfs.c
Auto-merging drivers/target/iscsi/iscsi_target_util.c
Auto-merging drivers/hwmon/Kconfig
Auto-merging drivers/gpu/drm/i915/intel_ringbuffer.c
Auto-merging drivers/gpu/drm/i915/intel_drv.h
Auto-merging drivers/gpu/drm/i915/intel_dp.c
Auto-merging drivers/gpu/drm/i915/intel_display.c
Auto-merging drivers/gpu/drm/i915/i915_gem.c
CONFLICT (content): Merge conflict in drivers/gpu/drm/i915/i915_gem.c
Auto-merging drivers/clk/rockchip/clk-rk3288.c
Auto-merging arch/mips/include/asm/topology.h
Auto-merging arch/m68k/coldfire/m54xx.c
Auto-merging Next/quilt-import.log
CONFLICT (add/add): Merge conflict in Next/quilt-import.log
Auto-merging Next/merge.log
CONFLICT (add/add): Merge conflict in Next/merge.log
Auto-merging Next/SHA1s
CONFLICT (add/add): Merge conflict in Next/SHA1s
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at least 5040 and retry the command.
Automatic merge failed; fix conflicts and then commit the result.

git status
On branch master
Your branch and 'origin/master' have diverged,
and have 236 and 347 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

You have unmerged paths.
  (fix conflicts and run "git commit")

Changes to be committed:
    ...

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both added:      Next/SHA1s
    both added:      Next/merge.log
    both added:      Next/quilt-import.log
    both modified:   drivers/gpu/drm/i915/i915_gem.c
    both modified:   drivers/target/target_core_fabric_configfs.c
    both modified:   kernel/rcu/tree.c
    both added:      localversion-next
    both modified:   tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt

  • Que hace git status show

    – Andrés C.

    17/09/2014 a las 21:55

  • ¿El repositorio que clonaste es público? Si es así, publique un enlace para que la gente aquí pueda investigar. Quien tenga acceso de escritura puede tener (¡horror!) una historia reescrita.

    – jub0bs

    17/09/2014 a las 22:05


  • Es linux-next, lo intentaré nuevamente hoy y luego publicaré los resultados.

    – René Kolařík

    18/09/2014 a las 12:35

  • ¿Quizás alguien rebasado en tu origen?

    – tren palazzo

    19 de septiembre de 2014 a las 6:09

Avatar de usuario de Pavel Šimerda
pavel simerda

En primer lugar, un poco de precaución que estoy usando a diario…

aprendí a usar git merge --ff-only cuando no espero ninguna fusión real. Veo que también es posible usar git pull --ff-only pero más a menudo uso git pull --rebase por lo que no crea ninguna confirmación de fusión, sino que reproduce mis cambios locales (si los hay) en la parte superior de la corriente. Sin embargo, no puedo ayudar con la explicación, ya que no conozco las reglas para linux-next.

La única razón para tener un conflicto de fusión es fusionarse con ramas divergentes. En caso de que su rama no haya cambiado, uno esperaría una fusión limpia y rápida. La única explicación que se ajusta a su descripción es que el control remoto ya no incluye su confirmación en su historial y eso significa que el flujo ascendente tiene un historial reescrito. Eso es bastante común en algunos flujos de trabajo donde la rama publicada es solo un puntero a la última confirmación de un conjunto más grande de cambios. No tengo información específica para linux-siguientesin embargo.

Zona de peligro: cuando surge esta situación, puede obtener los datos ascendentes utilizando git fetch y luego actualice su referencia de sucursal usando git reset --hard origin/master (sustituto origen y Maestro con nombres remotos y sucursales reales). Pero asegúrese de que no haya ningún cambio que desee guardar, ya que se trata de una operación destructiva.

  • ¿Qué quieres decir con usar [git merge –ff-only] cuando no esperas ninguna fusión real?

    – embolar

    20 de mayo de 2020 a las 12:53

Además de los comentarios de Pavel, asegúrese de no tener un cambio confirmado que aún no haya impulsado. En ese caso, si ve que tiene 0 archivos que deben confirmarse (y quizás tenga poco sueño), es posible que se sienta un poco desconcertado cuando quiera comenzar a fusionarse.

Lo que hice para resolver este problema fue cambiar temporalmente a una rama diferente, eliminar (localmente) la rama con los conflictos de combinación y luego volver a obtener la rama.

¿Ha sido útil esta solución?