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
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.
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