repositorio remota rama comandos cambiar actualizar git git-checkout remote-branch

remota - git push



Git checkout: actualizar rutas es incompatible con cambiar ramas (11)

¿Podría su problema estar vinculado a esta otra pregunta de SO "problema de pago" ?

es decir: un problema relacionado con:

  • una versión antigua de Git
  • una curiosa sintaxis de git checkout -b [<new_branch>] [<start_point>] , que debería ser: git checkout -b [<new_branch>] [<start_point>] , con [<start_point>] referencia al nombre de un commit en el que se inicia la nueva rama, y ''origin/remote-name'' no es eso.
    (mientras que git branch admite un punto de inicio que es el nombre de una rama remota)

Nota: lo que dice el script checkout.sh es:

if test '''' != "$newbranch$force$merge" then die "git checkout: updating paths is incompatible with switching branches/forcing$hint" fi

Es como si la sintaxis git checkout -b [] [remote_branch_name] cambiara el nombre de la rama y restableciera el nuevo punto de inicio de la nueva rama, que se considera incompatible.

Mi problema está relacionado con el error Fatal Git al cambiar de rama .

Intento buscar una rama remota con el comando

git checkout -b local-name origin/remote-name

pero me sale este mensaje de error:

fatal: git checkout: la actualización de rutas es incompatible con el cambio de ramas.
¿Tuvo la intención de verificar ''origen / nombre remoto'' que no se puede resolver como confirmación?

Si creo manualmente una rama y luego arranco la rama remota, funciona, al igual que hacer un nuevo clon y verificar la rama.

¿Por qué no funciona en el repositorio con el que trabajo?


Creo que esto ocurre cuando intentas retirar una sucursal remota de la que tu repositorio de git local aún no conoce. Tratar:

git remote show origin

Si la sucursal remota que desea retirar está en "Nuevas sucursales remotas" y no en "Ramas remotas rastreadas", primero debe buscarlas:

git remote update git fetch

Ahora debería funcionar:

git checkout -b local-name origin/remote-name


Después de buscar un millón de veces, los controles remotos aún no aparecían, aunque las burbujas estaban en la piscina. Resulta que la opción --tags no debería darse a git remote add por cualquier motivo. Puede eliminarlo manualmente desde .git / config para hacer que git fetch cree los refs.


Después de haber probado la mayor parte de lo que pude leer en este hilo sin éxito, tropecé con este: Ramificación remota que no aparece en "git rama -r"

Resultó que mi archivo .git / config era incorrecto. Después de hacer un simple arreglo todas las ramas aparecieron.

Ir desde

[remote "origin"] url = http://stash.server.com/scm/EX/project.git fetch = +refs/heads/master:refs/remotes/origin/master

a

[remote "origin"] url = http://stash.server.com/scm/EX/project.git fetch = +refs/heads/*:refs/remotes/origin/*

Hizo el truco


No es muy intuitivo pero esto funciona bien para mí ...

mkdir remote.git & cd remote.git & git init git remote add origin $REPO git fetch origin $BRANCH:refs/remotes/origin/$BRANCH

ENTONCES ejecuta el comando git branch --track ...

git branch --track $BRANCH origin/$BRANCH


No estoy seguro de si esto es útil o exactamente relevante para su pregunta, pero si está tratando de obtener y desproteger solo una rama del repositorio remoto, los siguientes comandos de git harán el truco:

url= << URL TO REPOSITORY >> branch= << BRANCH NAME >> git init git remote add origin $url git fetch origin $branch:origin/$branch git checkout -b $branch --track origin/$branch


Para mí lo que funcionó fue:

git fetch

Lo que atrae a todas las referencias a su máquina para todas las sucursales en el control remoto. Entonces podria hacer

git checkout <branchname>

y eso funcionó perfectamente. Similar a la respuesta más votada, pero un poco más simple.


Para mi tuve un error tipográfico y mi rama remota no existía

Usa git branch -a para listar ramas remotas


Sintaxis alternativa,

git fetch origin remote_branch_name:local_branch_name


Sospecho que no hay una rama remota llamada nombre-remoto, pero que sin querer ha creado una rama local llamada origen / nombre-remoto.

¿Es posible que en algún momento escribiste:

git branch origin/remote-name

¿Así creando una rama local llamada origen / nombre-remoto? Escriba este comando:

git checkout origin/remote-name

O bien verás:

Switched to branch "origin/remote-name"

lo que significa que es realmente una rama local mal nombrada, o

Note: moving to "origin/rework-isscoring" which isn''t a local branch If you want to create a new branch from this checkout, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b

lo que significa que realmente es una rama remota.


ninguno de los anteriores funcionó para mí. Mi situación es ligeramente diferente, mi sucursal remota no está en origen . pero en un repositorio diferente.

git remote add remoterepo GIT_URL.git git fetch remoterepo git checkout -b branchname remoterepo/branchname

Consejo: si no ve la rama remota en la siguiente salida, git branch -v -a no hay forma de comprobarlo.

Confirmado trabajando en 1.7.5.4