Psicofonías

(algo así como el blog de Psicobyte)

Sincronizando git sobre ssh

Es decir: Cómo trabajar en varios ordenadores con git, sin usar Github ni ningún servicio similar, usando en su lugar un servidor local y una conexión ssh.

Para este ejemplo, supondré que queremos usar un ordenador de escritorio y un portátil, pero es fácilmente extensible a cualquier número de ordenadores.

Primero vamos a crear un "repositorio central" en nuestro ordenador de escritorio. Para ello usamos la opción "--bare", que sirve para crear un repositorio sin directorio de trabajo ni archivos:

psicobyte@escritorio:~$ git init --bare proyecto.git

En un repositorio creado con la opción "--bare" no se puede trabajar, por lo que vamos a clonarlo en un proyecto con el que trabajar:

psicobyte@escritorio:~$ git clone ~/proyecto.git

Esto nos crea un directorio llamado "proyecto" con un clon del repositorio central (aún vacío). Aquí ya podemos trabajar normalmente, comitear y pushear como harías con cualquier otro. Por ejemplo:

psicobyte@escritorio:~$ cd proyecto
psicobyte@escritorio:~$ touch holamundo
psicobyte@escritorio:~$ git add holamundo
psicobyte@escritorio:~$ git commit -m "añadido archivo vacío de poca utilidad"

Como me avisa fernand0 en un twitter, al estar nuestro "repositorio central" vacío, la primera vez que hacemos push debemos hacerlo de este modo:

git push --set-upstream origin master

Esto es sólo para la primera vez, y hace que se "emparejen" las ramas master de los repositorios. En adelante se puede hacer push normalmente sin problemas.

Hasta ahora hemos trabajado en un sólo ordenador, pero queremos poder hacerlo también desde un portátil. Nada más fácil.

Para ello necesitamos tener acceso ssh al ordenador de escritorio desde el portátil, y sería una estupenda idea que el ordenador de escritorio tuviese una IP fija. si tenemos eso, sólo hay que clonarlo usando la dirección y la ruta del servidor por ssh de este modo:

En nuestro caso:

psicobyte@portatil:~$ git clone ssh://psicobyte@192.168.1.3/home/psicobyte/proyecto.git

Y ya podemos trabajar tranquilamente.

Naturalmente, usando servicios como no-ip o similares, podemos usar el servidor más allá de nuestra red local.

Posts Posteriores 1/1 Posts Anteriores
PPCMS 2022