ver tag remota ramas rama crear clonar git version-control branch

remota - git push tag



Git: ¿Qué es una rama de seguimiento? (4)

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

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

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

Úselo si siempre extrae de la misma rama ascendente en la nueva rama, 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 ramas es algo bueno y que después de crear su primer control remoto (origen, en este caso), debería configura su rama principal para que sea una rama de seguimiento, pero desafortunadamente no cubre por qué una rama 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)?


A continuación están mis apuntes personales de aprendizaje sobre las sucursales de seguimiento de GIT, con suerte será útil para los futuros visitantes:

Rastreo de ramas y "git fetch":


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

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


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 rama de seguimiento y escribes git push, Git sabe automáticamente a qué servidor y qué rama acceder. Además, al ejecutar git pull mientras está en una de estas ramas, se obtienen todas las referencias remotas y luego se fusiona automáticamente en la rama remota correspondiente.

Cuando clonas un repositorio, generalmente crea automáticamente una rama maestra que rastrea el origen / maestro. Es por eso que git push y git pull trabajan de la caja sin más argumentos. Sin embargo, puede configurar otras ramas de seguimiento si lo desea, las que no rastrean las sucursales en el origen y no rastrean la rama 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 ramales de rastreo local , solo ramales de rastreo remotos .
Entonces origin/master es una rama de seguimiento remoto para el master en el repositorio de origin .

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

  • una rama local como master
  • y una rama 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 repositorio en sentido ascendente .