with tortoise software migrar branches git git-svn

tortoise - software git



git refname ''origin/master'' es ambiguo (4)

Hace unos días enfrenté el mismo problema en el que se crearon múltiples referencias de la misma rama.

Cosas que probé:

> git show-ref (will give you the list of references, from the > references list you can check if there are multiple references created > for the branch you are working on or not.)

Si hay múltiples referencias creadas, simplemente elimínelas

rm .git/refs/heads/master

Después de eliminar las referencias, puede retirar la sucursal del origen remoto solo si ha introducido algo en ella, de lo contrario, debe rehacer todo lo que hizo en la sucursal

git fetch origin git checkout origin/branchName

Esta solución me funcionó en caso de ramas ambiguas.

Tengo un repositorio git que rastrea varias ramas remotas:

$ git branch -a * master remotes/git-svn remotes/origin/master remotes/trunk

Cuando intento configurar uno predeterminado, aparece el siguiente error:

$ git branch --set-upstream-to=origin/master master warning: refname ''origin/master'' is ambiguous. fatal: Ambiguous object name: ''origin/master''.

Me gustaría eliminar algunas de las ramas maestras remotas, pero las referencias maestras todavía están allí. ¿Cómo puedo eliminarlos para poder establecer la rama ascendente predeterminada en origin/master ?

$ git show-ref master cba97a58c99743c355b569bbf35636c8823c2d96 refs/heads/master 6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master d83f025cd3800ed7acd76b2e52ae296e33f1cd07 refs/original/refs/heads/master cba97a58c99743c355b569bbf35636c8823c2d96 refs/remotes/origin/master


La salida de git branch -a muestra que tiene una rama de seguimiento remoto llamada origin/master . Perfectamente normal.

Sin embargo, la salida de git show-ref master contiene

6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master

lo que indica que lo más probable es que hayas ejecutado algo como el siguiente comando de bajo nivel:

git update-ref refs/origin/master master

Este comando crea una rama (apuntando al mismo commit que master ) llamada origin/master , pero que vive directamente debajo de refs/ , es decir, fuera del espacio de refs/heads/ names, donde normalmente viven las ramas locales. Muy sospechoso ... ¿Querías hacer eso?

Tal rama no aparecerá en la lista por git branch -a . Sin embargo, Git se está confundiendo porque ve dos ramas cuyos nombres de referencia terminan con origin/master :

  • refs/remotes/origin/master , su rama de seguimiento remoto, y
  • refs/origin/master , la sucursal local que creó (por accidente) fuera de refs/heads/ .

Solución

Si no quisiste crear refs/origin/master

Simplemente elimínelo:

git update-ref -d refs/origin/master

Entonces, no habrá ninguna ambigüedad, y Git cumplirá cuando intentes configurar el master en sentido ascendente.

Si quisiste crear refs/origin/master

Para evitar ambigüedades, simplemente especifique el nombre de referencia completo de la rama que desea establecer como master ascendente:

git branch --set-upstream-to=refs/remotes/origin/master master

Para arreglar ideas, aquí hay un código que reproduce la situación en uno de mis repositorios de GitHub:

$ cd ~/Desktop $ git clone https://github.com/Jubobs/gitdags && cd gitdags $ git update-ref refs/origin/master $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master $ git show-ref master 15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/heads/master 15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/origin/master 15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/HEAD 15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/master $ git branch --set-upstream-to=origin/master master warning: refname ''origin/master'' is ambiguous. fatal: Ambiguous object name: ''origin/master''. $ git update-ref -d refs/origin/master $ git branch --set-upstream-to=origin/master master Branch master set up to track remote branch master from origin.


Probablemente creó accidentalmente una referencia local llamada ''origen / maestro''

por ejemplo, si hiciste esto

git branch origin/master

Conduciría a este problema. Este parece sospechoso "referencias / origen / maestro". "refs / heads / master" es su maestro local, "refs / remotes / origin / master" es su referencia de rama remota, y "refs / origin / master" es probablemente un error que lo está arruinando.

Solo necesita eliminar esa referencia (git update-ref -d) y las cosas comenzarán a funcionar nuevamente.


Tuve un problema muy similar debido a una etiqueta accidental llamada "master", que se muestra en git show-ref master como refs/tags/master . La solución en este caso fue:

git tag -d master