Lo primero es obtener un repositorio de otro desarrollador en una máquina local. Para ello basta ejecutar con dirigirnos al directorio donde queramos nuestro nuevo repositorio y a continuación ejecutar
$ git clone /ruta/al/repositorio directorio-nuevo-repositorio
ejemplo
$ git clone /home/novanebula/repo1 repo2
Suponiendo que /home/novanebula/repo1 contuviera el repositorio antiguo git crearía un nuevo directorio llamado repo2 que contiene el nuevo repositorio.
Podemos trabajar con normalidad sobre el nuevo repositorio. Cuando terminemos y estemos satisfechos con los cambios ejecutamos
$ git commit -a
Para llevar estos cambios al repositorio original debemos ir a ese repositorio o solicitar a la persona que lo lleve que ejecute desde el directorio de este repositorio:
$ git pull /ruta/nuevo/repositorio branch
ejemplo
$ git pull /home/novanebula/repo2 master
Y las modificaciones en el segundo repositorio se aplicarán al primero. Si este contenía modificaciones locales hay que resolver conflictos. Por lo tanto pull hace dos tareas trae las modificaciones de otro repositorio y mezcla estas modificaciones en el repositorio donde se ha ejecutado.
Si el usuario del primer repositorio quiere analizar las modificaciones que se han introducido en el segundo antes de ejecutar un pull. Puede hacerlo ejecutando
$ git fetch /home/novanebula/repo2 master
$ git log -p HEAD..FETCH_HEAD
Es posible definir dentro de un repositorio otros repositorios locales para simplificar las ordenes entre ellos:
(repo1)$ git remote add /home/novanebula/repo2 repo2
Ahora para recoger los cambios en el repo2 podemos ejecutar
(repo1)$ git fetch repo2
Analizar los cambios
(repo1)$ git log -p HEAD..FECH_HEAD
y mezclarlos en el repositorio actual con:
(repo1)$ git merge repo2/master
o con
(repo1)$ git pull . remotes/repo2/master
Además desde repo2 se puede mantener una copia actualizada de las modificaciones en repo1simplemente ejecutando
(repo2)$ git pull
Esta opción ya estaba disponible desde que repo2 fuera creado con el comando clone
(repo2)$ git config --get remote.origin.url
Git también mantiene una copia del repo original bajo el nombre origin/master:
(repo2)$ git branch -r
Si repo2 tuviera que trabajar desde otro servidor podría hacerlo a través del protocolo ssh ejecutando este clone:
$ git clone host-address:/home/novanebula/repo1 repo2
Git también tiene un protocolo nativo o puede usar rsync o http. Pudiendo trabajar incluso al estilo de CVS con un repositorio central sobre el que todos los desarrolladores enviasen sus cambios.





0 Referencias