2012-04-13 30 views
126

he clonado un repositorio git y luego obtenido una etiqueta:etiqueta git checkout, git pull falla en la rama

# git checkout 2.4.33 -b my_branch 

Esto está bien, pero cuando trato de ejecutar git pull en mi rama, git escupe este error:

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 new origin/<branch> 

Quiero git pull actualizar sólo la rama principal y dejar mi sola rama actual (que es una etiqueta de todos modos). Es algo como esto posible?

La razón por la que necesito esto es que tengo un script automático que siempre git tira del repositorio y, por supuesto, no a causa del error anterior ..

+0

Posible duplicado de [git pull: no hay información de seguimiento para la rama actual] (http://stackoverflow.com/questions/32056324/git-pull-there-is-no- tracking-information-for-the-current-branch) – daisy

Respuesta

103

Editar: hay nuevas versiones de Git, --set-upstream master ya no se utiliza, se debe utilizar --set-upstream-to vez :

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

A medida que se le pide, puede simplemente ejecutar:

git branch --set-upstream master origin/master 

Después de eso, simplemente puede ejecutar git pull actualizar el código.

+4

Esto resolvió el problema. Pero aún tengo que entender cómo mi rama principal perdió la referencia al origen. Estaba en una sucursal e hice 'git checkout master'. No pude hacer 'git pull' porque la referencia al origen se perdió. Ahora funciona. ¡Gracias! – Ariel

6

volver a la rama principal utilizando

$ git checkout master 

y luego ejecute la operación

$ git pull origin/master 

git pull Posteriormente, puede cambiar de nuevo a su my_branch nuevo.

+6

Eso es exactamente lo que trato de evitar. Quería saber si hay una forma "oficial" de hacerlo. – alesko

0

Para sólo tiene que descargar actualizaciones:

git fetch origin master 

Sin embargo, esto sólo actualiza una referencia llamada origin/master. La mejor forma de actualizar su master local sería la extracción/compra mencionada en otro comentario. Si se puede garantizar que su local de master no ha divergido desde el tronco principal que origin/master está activado, podía uso git update-ref asignar su actual master al nuevo punto, pero que probablemente no es la mejor solución que se utiliza en una de forma regular ...

90

que tenían el mismo problema y lo arreglaron con este comando:

$ git push -u origin master 

Desde el archivo de ayuda del -u, básicamente, establece el valor predeterminado para tirones:

-u, --set-upstream` 

    For every branch that is up to date or successfully pushed, add 
    upstream (tracking) reference, used by argument-less git-pull(1) and 
    other commands. For more information, see branch.<name>.merge in 
    git-config(1). 
5

@alesko: no es posible solo hacer solo git pull después del pago my_branch para actualizar master solo rama.
Debido git pull también se fusionarán a la actual rama -> en su escenario a la my_branch

@Simon: que lo hará también el empuje. ¿porqué es eso?

$ git branch -u origin/master 
Branch master set up to track remote branch master from origin. 

y según documentos:

-u <upstream> 
    Set up <branchname>'s tracking information so <upstream> is considered 
    <branchname>'s upstream branch. If no <branchname> is specified, 
    then it defaults to the current branch. 
47

Pruebe estos comandos:

git pull origin master 
git push -u origin master 
4

Primero, asegúrese de estar en la rama derecha.
Entonces (sólo una vez):

git branch --track 

Después de que esto funciona de nuevo:

git pull 
1

Necesitas configurar el seguimiento (aguas arriba) de la rama actual

git branch --set-upstream master origin/master 

Ya está en desuso, en lugar de eso, puede usar --marca de la canción

git branch --track master origin/master 

también me gusta la referencia doc que el aviso @casey:

-u <upstream> 
    Set up <branchname>'s tracking information so <upstream> is considered 
    <branchname>'s upstream branch. If no <branchname> is specified, 
    then it defaults to the current branch. 
1

Lo que funcionó para mí fue: git branch master -set-aguas arriba a aguas = origen Cuando me di un tirón de nuevo sólo me Obtuve las actualizaciones del maestro y la advertencia desapareció.

4

Puede tener múltiples sucursales. Y su sucursal actual no se estableció en sentido ascendente en remoto.

pasos para solucionar este:

git checkout branch_name 
git branch --set-upstream-to=origin/remote_branch_name local_branch_name 

por ejemplo

// this set upstream of local branch develop to remote branch origin/develop, 
git branch --set-upstream-to=origin/develop develop 

Después de hacer esto, cuando lo hace git pull, que tire de rama especificada.

2

Prueba este

git checkout master 

git pull origin master 
+2

Esto realmente no está respondiendo la pregunta. Además, aunque no hay una respuesta aceptada, la más votados es mucho más apropiada como respuesta a esta vieja pregunta – fejese

0

Este comando es obsoleto: git branch --set-upstream master origin/master

Por lo tanto, cuando se trata de configurar el seguimiento, esto es el comando que trabajó para mí:

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

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

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

Cuando vea el mensaje There is no tracking information..., basta con ejecutar git set-upstream, entonces git push nuevo.

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

1

podría especificar qué rama desea extraer:

git pull origin master 

O usted puede configurarlo para que su rama principal pistas github rama principal local como aguas arriba:

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

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

--set-upstream está en desuso en git 1.9.x, al parecer. En el futuro te gustaría usar algo como

git branch -u origin/master 

suponiendo que haya comprobado maestro ya. Si no, git branch -u origin/master master funcionará