2011-02-25 8 views
8

He clonado un repositorio y estaba trabajando en la rama principal. Hubo un problema constante: git push (y git push) no funcionó y dio un mensaje de error largo, no interpretable. A través de prueba y error, encontré que git push origin master hizo el empuje correctamente. Pero ahora he notado algo extraño:¿Cómo hacer la pista de bifurcación maestra?

$ git config push.default tracking 
$ git push 
fatal: The current branch master is not tracking anything. 

WTF? Pensé que si clonabas un repositorio, el maestro se rastreó automáticamente. De todos modos, mis preguntas reales son

  1. ¿Cómo se supone que crearé un clon para que se rastreen las ramas?
  2. ¿Cuáles son las consecuencias (distintas de la actual) de no teniendo seguimiento?
  3. ¿Cómo puedo solucionar la situación actual, para que mi sucursal rastree el control remoto?

EDITAR Mi repositorio local estaba actuando de manera extraña en otras formas; lo más notable: no pude crear ramas remotas. Lo dejé de lado e hice un clon nuevo, y está actuando de forma extraña en formas nuevas.

En primer lugar, master está siguiendo (sí). Segundo, pude hacer una rama remota, pero es extraño.

Ratatouille $ git push origin origin:refs/heads/premium 
Total 0 (delta 0), reused 0 (delta 0) 
To [email protected]:gamecrush/Ratatouille.git 
* [new branch]  origin/HEAD -> premium 
Ratatouille $ git branch -r 
    origin/HEAD -> origin/master 
    origin/master 
    origin/premium 

Ratatouille es el nombre del repositorio remoto, por supuesto. El punto extraño: ¿qué es eso -> allí? Parece ser nuevo y no aparece para el viejo repositorio local u otros clones del control remoto.

Pero ahora la bifurcación y el seguimiento funcionan como se anuncia.

+0

necesito un poco de café. Leí esto como "¿Cómo arreglar los frenos de un camión monstruo?" y pensé "¡ni siquiera hay un cambio de pila por eso!" :-( – corsiKa

+0

Correcto, yo * también * necesito arreglar los frenos en mi camión monstruo. Y necesito una copia de la secuencia de comandos * Mister Brooks * – Malvolio

+0

Problema relacionado - Tuve un seguimiento de parada de seguimiento después de un "reinicio de git" - -hard "(no estoy seguro por qué) y la respuesta de Arrowmaster resolvió el problema. – joelmdev

Respuesta

23

¿Cuál es su branch.autosetupmerge establecido para? De manera predeterminada, debería haber configurado el seguimiento de bifurcación cuando se clonó.

Intente establecer el flujo ascendente para la bifurcación con esto para que la bifurcación rastree el control remoto.

git branch --set-upstream master origin/master 
+0

He estado jugando con él así que es * actualmente * cierto, pero podría haber sido falso en el momento en que se clonó el repositorio (aunque por qué no lo hice) lo sé). ¿Hay alguna forma de mostrar qué, si es que algo, está siguiendo una sucursal? – Malvolio

+0

@Malvolio: use 'git remote show origin' para obtener una lista de las ramas que están rastreando en ese control remoto. El 'origen/HEAD -> origen/master' en su pregunta editada me parece normal. – Arrowmaster

+0

@Arrowmaster: primero, gracias por el nombre del comando. En segundo lugar, no es normal en el sentido literal: los otros repos carecen de eso -> cosa. La salida de 'show origin' es principalmente útil excepto por esto:' HEAD branch (el HEAD remoto es ambiguo, puede ser uno de los siguientes): '(con el maestro y mi nueva rama en la lista). Mi única teoría: no he hecho ningún commit nuevo en ninguna de las ramas desde la creación de la segunda rama, por lo que si HEAD debe apuntar a una confirmación, no a una rama, y ​​las cabezas (uh, si esa es la palabra) de las ramas son las mismas , entonces no puede decir en qué rama está. – Malvolio

6

Una alternativa: para configurar el maestro para realizar un seguimiento de la distancia, durante su primer impulso ejecutar:

git push -u origin master 

El -u va a hacer lo mismo que --set-upstream. Después, ejecute git branch -vv para ver una lista de sucursales, incluidas sus ramas de seguimiento.

+0

Gracias, @Dave. ¿Debo entender que "aguas arriba" es la relación recíproca de "seguimiento"? ¿Que si A está aguas arriba de B, B sigue a A? Tal vez en finlandés ... – Malvolio

+1

Sí, creo que es una declaración justa. Mi cabeza empieza a doler si piensas en una rama aguas arriba que rastrea una rama aguas abajo. –

1

Otra alternativa:

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