Git: ¿Qué es una twig de seguimiento?

¿Alguien puede explicar una "twig de seguimiento" tal como se aplica a git?

Aquí está la definición de git-scm.com :

Una 'twig de seguimiento' en Git es una sucursal local que está conectada a una sucursal remota. Cuando empuja y tira de esa twig, automáticamente empuja y tira hacia la twig remota con la que está conectada.

Úselo si siempre extrae de la misma twig ascendente en la nueva twig, y ​​si no desea usar "git pull" explícitamente.

Desafortunadamente, ser nuevo en git y venir de SVN, esa definición no tiene absolutamente ningún sentido para mí.

Estoy leyendo " The Pragmatic Guide to Git " (gran libro, por cierto), y parecen sugerir que rastrear twigs es algo bueno y que después de crear su primer control remoto (origen, en este caso), debería configura su twig principal para que sea una twig de seguimiento, pero desafortunadamente no cubre por qué una twig de seguimiento es algo bueno o qué beneficios obtiene al configurar su sucursal principal para que sea una sucursal de seguimiento de su depósito de origen .

¿Alguien puede por favor iluminarme (en inglés)?

El libro ProGit tiene una muy buena explicación :

Ramas de seguimiento

El control de una sucursal local desde una sucursal remota crea automáticamente lo que se denomina una sucursal de seguimiento. Las sucursales de seguimiento son sucursales locales que tienen una relación directa con una sucursal remota. Si estás en una twig de seguimiento y escribes git push, Git sabe automáticamente a qué server y qué twig acceder. Además, al ejecutar git pull mientras está en una de estas twigs, se obtienen todas las references remotas y luego se fusiona automáticamente en la twig remota correspondiente.

Cuando clonas un repository, generalmente crea automáticamente una twig maestra que rastrea el origen / maestro. Es por eso que git push y git pull trabajan de la caja sin más arguments. Sin embargo, puede configurar otras twigs de seguimiento si lo desea, las que no rastrean las twigs en el origen y no rastrean la twig principal. El caso simple es el ejemplo que acabas de ver, ejecutando git checkout -b [branch] [remotename]/[branch] . Si tiene la versión 1.6.2 o posterior de Git, también puede usar la taquigrafía --track :

 $ git checkout --track origin/serverfix Branch serverfix set up to track remote branch refs/remotes/origin/serverfix. Switched to a new branch "serverfix" 

Para configurar una sucursal local con un nombre diferente al de la sucursal remota, puede usar fácilmente la primera versión con un nombre de sucursal local diferente:

 $ git checkout -b sf origin/serverfix Branch sf set up to track remote branch refs/remotes/origin/serverfix. Switched to a new branch "sf" 

Ahora, su sf sucursal local automáticamente empujará hacia y desde el origin/serverfix .

El libro de Progit menciona:

Las sucursales de seguimiento son sucursales locales que tienen una relación directa con una sucursal remota

No exactamente. La pregunta de SO " Tener dificultades para entender git-fetch " incluye:

No existe tal concepto de twigles de rastreo local , solo twigles de rastreo remotos .
Entonces origin/master es una twig de seguimiento remoto para el master en el repository de origin .

Pero en realidad, una vez que establece una relación de twig ascendente entre:

  • una twig local como master
  • y una twig de seguimiento remoto como origin/master

Luego, puede considerar el master como una sucursal de seguimiento local : rastrea el origin/master sucursal de seguimiento remoto que, a su vez, rastrea la sucursal principal del origin repository en sentido ascendente .

texto alternativo

Así fue como agregué una twig de rastreo para poder sacarla de mi nueva sucursal:

 git branch --set-upstream-to origin/Development new-branch