No hay información de seguimiento para la sucursal actual

581

He estado usando github durante un período relativamente corto, y siempre he usado al cliente para realizar commits y pulls. Decidí probarlo desde el git bash ayer, y creé con éxito un nuevo repositorio y archivos confirmados.

Hoy realicé cambios en el repositorio desde otra computadora, cometí los cambios y ahora estoy de vuelta en casa y realicé una git pullactualización de mi versión local y obtengo esto:

There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream develop origin/<branch>

El único contribuyente a este repositorio soy yo y no hay sucursales (solo un maestro). Estoy en Windows y he realizado la extracción de git bash:

ingrese la descripción de la imagen aquí

estado de git:

$ git status
# On branch master
nothing to commit, working directory clean

rama de git:

$ git branch
* master

¿Qué estoy haciendo mal?

valerio0999
fuente
De acuerdo, ¿qué tal un git remote -v? ¿Qué dice eso?
criswell
Posible duplicado de la etiqueta git checkout, git pull falla en la rama
rjmunro
También puede obtener ese error si no ha cd en el directorio de repositorios clonado, al ejecutar git pull.
Victoria Stuart el
Con Git 2.24, Q4 2019, git pull --set-upstream-to=origin/master masteres posible. Vea mi respuesta a continuación
VonC

Respuestas:

951

Puede especificar qué rama desea extraer:

git pull origin master

O puede configurarlo para que su rama maestra local rastree la rama maestra github como una cadena ascendente:

git branch --set-upstream-to=origin/master master
git pull

Este seguimiento de bifurcación se configura automáticamente cuando clona un repositorio (solo para la bifurcación predeterminada), pero si agrega un control remoto a un repositorio existente, debe configurar el seguimiento usted mismo. Afortunadamente, el consejo dado por git hace que sea bastante fácil recordar cómo hacerlo.

ComputerDruid
fuente
3
¡Perfecto! funcionó. Entonces, ¿qué pasó si no había una "rama predeterminada" para un "git pull" predeterminado? es por eso que hubo el error?
valerio0999
16
--set-upstream está en desuso en git 1.9.x, aparentemente. En el futuro, querrá usar algo como git branch -u origin/master, suponiendo que ya haya revisado master. Si no, git branch -u origin/master masterfuncionará.
Bart leyó el
55
@BartRead lo actualizó para usar la nueva --set-upstream-to=sintaxis más clara . (que es el reemplazo para --set-upstream)
ComputerDruid
61
esto parece un estado lamentable: ¿realmente necesitamos configurarlo manualmente para cada rama? ¿Por qué no podemos simplemente establecer el origen como el control remoto predeterminado y luego tener cada inserción / extracción predeterminada en la rama en origen con el mismo nombre? ¿Es esto tan difícil?
Alexander Mills
44
Ah, la parte clave para mí aquí fue que si sueltas y vuelves a crear un control remoto, el seguimiento que se configuró con el original se fetchhabrá perdido. De ahí la necesidad de configurarlo de nuevo. :)
Ben
42

Ver: etiqueta de pago git, git pull falla en la rama

Si como yo necesita hacer esto todo el tiempo, puede configurar un alias para hacerlo automáticamente agregando lo siguiente a su .gitconfigarchivo:

[alias]
    set-upstream = \
       !git branch \
           --set-upstream-to=origin/`git symbolic-ref --short HEAD`

Cuando vea el mensaje There is no tracking information..., ejecute:

 git set-upstream
 git push

Gracias a https://zarino.co.uk/post/git-set-upstream/

rjmunro
fuente
1
Aquí hay una manera de agregarlo al global .gitconfigen una línea (puede modificarse para configuraciones locales u otras en consecuencia):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis
17

La respuesta de ComputerDruid es excelente, pero no creo que sea necesario configurarlo manualmente a menos que lo desee. Estoy agregando esta respuesta porque la gente podría pensar que es un paso necesario.

Este error desaparecerá si especifica el control remoto que desea extraer, como se muestra a continuación:

git pull origin master

Tenga en cuenta que origines el nombre del control remoto y masterel nombre de la sucursal.


1) Cómo verificar el nombre del control remoto

git remote -v

2) Cómo ver qué ramas están disponibles en el repositorio.

git branch -r
Aerin
fuente
1
La mejor respuesta para mí, ¡Gracias!
Bahman. A
7

Me encuentro con este mensaje exacto a menudo porque creo una sucursal local git checkout -b <feature-branch-name>sin crear primero la sucursal remota.

Después de que todo el trabajo se terminó y se comprometió localmente, la solución fue la git push -uque creó la rama remota, empujó todo mi trabajo y luego la URL de solicitud de fusión.

Ron Reynolds
fuente
1
para lo que vale, tuve que correr git push -u origin <my-feature-branch-name>para crear la rama remota y empujar mi trabajo
Donnie C
6

Estaba probando los ejemplos anteriores y no pude sincronizarlos con una rama (no maestra) que había creado en una computadora diferente. Para el fondo, creé este repositorio en la computadora A (git v 1.8) y luego cloné el repositorio en la computadora B (git 2.14). Hice todos mis cambios en la compilación B, pero cuando intenté colocar los cambios en la computadora, la IA no pudo hacerlo, obteniendo el mismo error anterior. Similar a las soluciones anteriores, tuve que hacer:

git branch --set-upstream-to=origin/<my_repository_name> 
git pull

ligeramente diferente pero con suerte ayuda a alguien

imapotatoe123
fuente
Esto funcionó para mí; También estaba usando una rama no maestra que se había configurado en una computadora diferente. Usando este comando en Git Bash, pude obtener mis cambios :)
Novastorm
3

1) git branch --set-upstream-to = origin / <master_branch>feature /<your_current_branch>

2) tirón de git

MERLIN THOMAS
fuente
1

$ git branch --set-upstream-to=heroku/master master y

$ git pull

¡trabajó para mi!

May Dias
fuente
1

Lo mismo me sucedió antes cuando creé una nueva rama git sin empujarla a su origen.

Intente ejecutar esas dos líneas primero:

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

Entonces:

git pull origin name_of_new_branch

¡Debería estar bien ahora!

Tritón
fuente
1

Esto sucede debido a que la rama actual no tiene seguimiento en la rama del control remoto. para que puedas hacerlo de 2 maneras.

  1. Tire con nombre de rama específico

maestro de origen git pull

  1. O puede realizar una ramificación específica para rastrear a la sucursal local.

git branch --set-upstream-to = origin /

KR93
fuente
0

git branch --set-upstream-to = origin / main

Amir Hussain
fuente
2
Siempre es útil agregar alguna explicación a su respuesta, para que sea más clara y comprensible. Lea stackoverflow.com/help/how-to-answer .
32cupo
1
Además del punto de @ 32cupo, esto es esencialmente lo mismo que la respuesta aceptada de cinco años, pero con menos explicación.
Jeremy Caney