2012-01-26 14 views
5

Parece que puedo extraer, o presionar, una rama en un repositorio remoto, desde/hasta la rama en la que estoy trabajando. Si es así, ¿cuál es el propósito de una rama de seguimiento remoto?¿Cuál es la diferencia entre una rama de seguimiento remoto y una rama en un control remoto?

¿Tiene el único propósito de verificar la sucursal y ver qué aspecto tiene? Parece que una rama de seguimiento remoto es como un espejo en una sucursal en un control remoto.

FYI: Soy bastante nuevo en git, pero he leído y releído muchos tutoriales, pero todavía no estoy más claro sobre este punto.

Gracias!

Respuesta

5

Tiene razón: las sucursales remotas realmente reflejan ramas en el repositorio remoto.

La rama remota y la rama de seguimiento remoto se usan para referirse a una rama del formulario refs/remotes/<remote-name>/<branch-name>, reportado p. como origin/master. (Tenga en cuenta que esto a veces se confunde con la noción de una rama que está rastreando una rama remota, por ejemplo, su rama principal está asociada con el origen/maestro. La terminología es desafortunada, pero ahí estamos).

El propósito de La rama de seguimiento remoto recuerda la última posición conocida de la rama en el repositorio remoto. Esto es necesario para que git pull funcione; se recupera de la sucursal del control remoto (sucursal principal del origen), lo almacena en la sucursal de seguimiento remoto (origin/master) y luego lo fusiona localmente. Los commits solo se pueden crear localmente, y las fusiones solo se pueden realizar en un árbol de trabajo, ¡así que esto es completamente esencial!

La rama de seguimiento remoto también es útil, como usted menciona, para examinar lo que está sucediendo en el repositorio remoto. Por defecto hay sucursales remotas para todas de las ramas del control remoto, por lo que puede usar fácilmente git remote update [--prune] <remote> o git fetch <remote> para actualizarlas, y luego verifíquelas y juegue con ellas como desee. Tenga en cuenta que puede hacer otras cosas además de verificarlas: puede diferenciarlas (git diff origin/master), averiguar qué origen de confirmaciones tiene que no (git log master..origin/master) o cualquier otra cosa que desee. Como todos los exámenes de historial son locales, la rama remota tiene que estar ahí para que la use.

Dado que git push afecta a las sucursales en el control remoto, actualiza naturalmente las ramas de seguimiento remoto; ¡no sería muy inteligente cambiar el maestro del origen y luego pretender que todavía estaba en la posición anterior hasta que hayas buscado! Pero en realidad no depende de las ramas de seguimiento remoto. (Si establece push.default de seguimiento, él se utilizar la configuración de seguimiento, maestro, por ejemplo de origen maestro de seguimiento, para decidir qué empujar. Pero todavía en realidad no depende de la rama de seguimiento remoto.)

+0

+ 1 El tuyo es una mejor respuesta que la mía. – Abizern

Cuestiones relacionadas