Administración de repositorios remotos

Hasta ahora se han mostrado cómo usar Git de forma local, pero ésta herramienta ofrece soporte para flujos distribuidos de trabajo. Git permite la sincronización del repositorio local con remotos a través de diversos protocolos. Por ejemplo, para empezar a trabajar sobre un repositorio remoto disponible en http:\/\/example.com\/repo.git se utiliza el siguiente comando:

# Usar en lugar de git init
$ git clone http://example.com/repo.git [<nombre>]

El argumento nombre es opcional y sirve para nombrar a la carpeta, el nombre por defecto es el del repositorio remoto (repo en éste caso) . El efecto del comando es similar a git init, pero en lugar de tener un historial vacío, se clonarán todos los objetos Git del repositorio en el repositorio en http:\/\/example.com\/repo.git, incluyendo commits, ramas, etiquetas, etc. (de ahí el nombre) y registrará la url en los repositorios remotos bajo el nombre origin. Se pueden ver los repos remotos con:

$ git remote

Para registrar un repo remoto de forma manual se usa:

$ git remote add <nombre> <url>

Donde la url puede ser de protocolos http(s), ssh o git. Para ver información acerca de un repo remoto se usa:

$ git remote show <nombre>

Para cambiar la url de un repo remoto se usa:

$ git remote set-url <nombre> <url>

Al descargar un repositorio, se clonan también las ramas, de tal forma que el repo local y el remoto funcionan como dos ramas paralelas, como lo indíca el siguiente diagrama:

El comando para descargar los cambios de un repo remoto es el siguiente:

$ git pull repo rama

Si se le agrega la opción -u se tomará por defecto el repo y la rama en pulls posteriores siempre y cuando se esté en la misma rama que la actual. Por ejemplo, en el diagrama anterior, la rama local master estaría emparejada con remote\/master (la rama master del repo remote). Éste comando es similar a merge, pero aplicado a repos remotos, por lo que en ocasiones es necesario resolver conflictos manualmente.

Al emparejar ramas con repos remotos, el comando git status muestra información acerca de la rama remota sincronizada, si hay cambios por descargar o subir. Para subir el trabajo al repo remoto se requieren permisos de escritura, y el comando a utilizar es:

$ git push repo rama

De forma similar a pull, se puede agregar la opción -u para que push tome el repo y la rama por defecto a partir de la siguiente vez que se utilice push.

El hecho de que Git es distribuido permite diversos flujos de trabajo. El más simple es el centralizado, en el que se prepara un repositorio que se va a compartir y todos contribuyen a dicho repo, tal como lo muestra el siguiente diagrama:

Debido a que muchas personas ya estaban acostumbradas a sistemas como CVS y Subversion, la transición a Git usando el modelo central se hace de una forma relativamente sencilla.

Otro esquema típico de Git es el jerárquico, en el cual el proyecto pasa por una serie de etapas incrementales. El siguiente diagrama muestra un ejemplo de ésto:

Al ser distribuido, Git se adapta a prácticamente cualquier flujo que se requiera.

results matching ""

    No results matching ""