agregar el nombre remote + swap con origen, da error: "git fetch origin; git merge "works,! =" git pull "tiene error-¿por qué / cómo?

He buscado alto y bajo para entender esto, y siento que se me escapa de los dedos. Hay QnAs similares, pero no idénticos aquí.

El problema:

$ git pull Your configuration specifies to merge with the ref 'master' from the remote, but no such ref was fetched. 

Mientras que git fetch no da nada, seguido de git merge origin que dice Already up-to-date. , que es lo que esperaba que git pull funcionara "correctamente".

 $ cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "official"] url = git://github.com/freenet/wininstaller-official.git fetch = +refs/heads/*:refs/remotes/official/* [remote "origin"] url = git://github.com/freenet/wininstaller-staging.git fetch = +refs/heads/*:refs/remotes/origin/* tagopt = --tags [branch "master"] remote = origin merge = refs/heads/master [branch "t"] remote = origin merge = refs/heads/master $ cat .git/refs/remotes/origin/master 1a30b106723624321366f40a078c9ca4c28394ec $ cat .git/refs/heads/master 1a30b106723624321366f40a078c9ca4c28394ec 

¿Por qué git pull da error, mientras que git fetch / merge produce el resultado esperado?

Antecedentes: cloné un git repo, freenet / wininstaller-official.git, luego vi wininstaller-staging.git y pensé que "es probable que exista una superposition no sustancial allí, debería agregar 'puesta en escena' como un control remoto al primer repository". Sí, ahora estamos cocinando con git! Esto será tan eficiente.

Entonces pensé que "la puesta en escena podría ser mejor para rastrear, llamemos a ese origen, y haga que mi maestro local rastree el nuevo origen / maestro". ¡Guauu! Uber-elte soy yo!

Así que cambio el nombre de los controles remotos como se indica arriba, elimino el maestro local, pago y envío de un nuevo maestro de seguimiento nuevo origen / maestro.

Y git fetch; git merge git fetch; git merge parece probar que funciona bien!

Pero, por desgracia, git pull errores de git pull Git. Ay de mí. No tan uber-elite después de todo 🙁

TIA

El error de git pull es quejarse de que no puede encontrar la twig de la que le has dicho que se fusione. Sospecho que esto se debe a que tiene tagopts = --tags configurados para el origin , y con esa opción, git fetch no busca los encabezados de las sucursales . Intenta eliminar esa línea y ejecuta git pull nuevamente.

Para explicar la diferencia de pull / fetch-and-merge : cuando se ejecuta git fetch manualmente, no obtiene las opciones --tags , por lo que capta las cabezas de las twigs. Entonces, después de ese punto, existe el origin/master y se puede fusionar desde.


Vale la pena agregar otra nota: es más normal usar git merge origin/<branch-name> , que es más explícito que git merge origin . En ese caso más inusual, git está interpretando el origin como la twig refs/remotes/origin/HEAD – es decir, la twig actual (o commit) en el origin del repository remoto la última vez que fue a search desde allí. Probablemente sea mejor seguir con git merge origin/<branch-name> para evitar confusiones.