Pregunta

Mi problema está relacionado con Error fatal de Git al cambiar de rama.

Intento recuperar una rama remota con el comando

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

pero me sale este mensaje de error:

fatal:git pago:actualizar rutas es incompatible con cambiar de rama.
¿Tenía la intención de verificar 'origen/nombre-remoto' que no se puede resolver como confirmación?

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

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

¿Fue útil?

Solución

Creo que esto ocurre cuando usted está tratando de retirar una rama remota de que su repositorio git local no es consciente de todavía. Proveedores:

git remote show origin

Si la rama remota que desea para la obtención se encuentra bajo "Nuevas sucursales remotas" y no "sucursales remotas de oruga", entonces tendrá que obtener primero:

git remote update
git fetch

Ahora debería funcionar:

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

Otros consejos

sintaxis alternativa,

git fetch origin remote_branch_name:local_branch_name

Después de haber probado la mayoría de lo que he podido leer en este hilo sin éxito, me encontré con éste: que no aparecen en la "rama git - r "

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

El ir de

[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/*

¿El truco

No estoy seguro si esto es útil o exactamente relevante a su pregunta, pero si usted está tratando de traer y la caja solamente un solo rama del repositorio remoto, a continuación, los siguientes comandos git hará 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

ninguna de las anteriores trabajado para mí. Mi situación es un poco 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

tip:. Si no ve la rama remota en el siguiente git branch -v -a de salida no hay manera de comprobar que funciona

Confirmado trabajando en 1.7.5.4

Para mí lo que funcionó fue la siguiente:

git fetch

Lo que unifica todas las referencias abajo a su máquina para todas las ramas del mando a distancia. Entonces podría hacer

git checkout <branchname>

y que funcionaba perfectamente. Al igual que en la parte superior votaron respuesta, pero un poco más sencilla.

Sospecho que no hay una sucursal remota llamada remota nombre, pero que ha creado inadvertidamente una rama local de nombres remoto origen / llamada.

¿Es posible que en algún momento mecanografiado:

git branch origin/remote-name

Por lo tanto la creación de una rama local llamado origen / remoto nombre? Escriba este comando:

git checkout origin/remote-name

ya sea que usted vea:

Switched to branch "origin/remote-name"

que significa que es en realidad una rama local mal llamado, 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.

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        

A continuación, ejecute el comando git branch --track ...

  git branch --track $BRANCH origin/$BRANCH

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

Usar git branch -a para enumerar sucursales remotas

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

es decir.:un problema relacionado con:

  • una versión antigua de Git
  • una curiosa sintaxis de pago, que debería ser: git checkout -b [<new_branch>] [<start_point>], con [<start_point>] refiriéndose al nombre de una confirmación en la que iniciar la nueva rama, y 'origin/remote-name' no es eso.
    (mientras git branch admite que start_point sea el nombre de una sucursal remota)

Nota:que secuencia de comandos checkout.sh dice 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] estuviera cambiando el nombre de la rama y restableciendo el nuevo punto de partida de la nueva rama, lo que se considera incompatible.

Después de ir a buscar un millón de veces añadido todavía mandos a distancia no se presentó, aunque las manchas estaban en la piscina. Resulta que los - etiquetas no debe administrarse a git remote add por cualquier razón. Puede eliminar manualmente desde el .git / config para hacer git fetch crear los árbitros.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top