Crear un repositorio remoto en Git desde archivos locales

Existen múltiples motivos por los que podemos disponer de código fuente antes de versionarlo: que heredemos un proyecto ya existente, que se nos ocurra una idea y en un impetuoso alarde de entusiasmo vayamos directamente al código, etc. Pero para mi el principal motivo es que es la forma más sencilla de comenzar un proyecto y un repositorio en Git: instalo la aplicación o el framework que necesito, realizo una configuración básica y acto seguido creo el repositorio.

Git

Por otro lado, en función de diferentes factores relacionados con un proyecto de desarrollo podemos trabajar en equipo, que es lo más probable, o solos. Cuando trabajamos en equipo es lógico que el software de control de versiones se encuentre en un servidor centralizado. Cuando trabajamos solos podemos decidir que solo esté en nuestra máquina.

Personalmente incluso trabajando en solitario en un proyecto me gusta versionar contra en un servidor centralizado por dos motivos principales:

  1. Mayor seguridad ante una eventualidad en mi equipo local, circunstancia que no evita que el proyecto deba estar respaldado por copias de seguridad.
  2. Posibilidad de trabajar en múltiples dispositivos, una opción más o menos interesante en función de nuestras circunstancias.

En caso de que el proyecto que tengamos entre manos sea de ámbito personal, es más que razonable pensar que no todos disponemos de un servidor en casa dónce centralizar el versionado. Esta situación la podemos resolver con un viejo pc, o si no disponemos de uno con una Raspberry Pi que haga las veces de servidor. Aquí te dejo un enlace al artículo Instalar y configurar Git en una Raspberry PI con Ubuntu Mate, por si quieres probarlo.

Así que vamos al lío y para ello asumiremos que nuestro servidor está configurado con la ip 192.168.1.10 y el nombre de nuestro usuario es usuario.

Creamos nuestro repositorio remoto

Lo primero que debemos hacer es crear y configurar correctamente un repositorio vacío en la máquina remota, así que empezaremos por conectarnos a ella:

1
ssh usuario@192.168.1.10

Ya en la consola remota creamos el directorio dónde alojaremos el repositorio que vamos a crear, personalmente creo un directorio en el que incluyo todos los repositorios:

1
2
3
4
5
cd ~
mkdir gitRepositoryRoot
cd gitRepositoryRoot
mkdir nuevoProyecto
cd nuevoProyecto

Y por fin creamos nuestro repositorio vacío y lo configuramos:

1
2
3
4
git --bare init
git config core.sharedrepository 1
git config receive.denyNonFastforwards true
git config --bool core.bare true

El último paso en la máquina remota es asignar los permisos adecuados al repositorio:

1
find objects -type d -exec chmod 02770 {} \;

Creamos nuestro repositorio local

Una vez que nuestro repositorio está correctamente creado en el servidor deberemos crear un repositorio local a partir de los fuentes que ya tenemos para posteriormente enlazarlo y enviarlo al repositorio que previamente hemos creado en la máquina remota.

Creamos el repositorio local y añadimos los fuentes existentes que supondremos que se encuentran en /var/www/nuevoProyecto:

1
2
3
4
cd /var/www/nuevoProyecto
git init
git add *
git commit -m "Commit inicial"

Creamos el repositorio y añadimos los fuentes:

1
2
git remote add origin ssh://usuario@192.168.1.10/home/usuario/gitRepositoryRoot/nuevoProyecto
git push -u origin master

Comprobamos que todo ha salido bien

Por último comprobaremos que hemos realizado el proceso correctamente y todo funciona correctamente.

1
2
3
git checkout origin/master
git branch -f master origin/master
git checkout master

Conclusión

Trabajemos en grupo o en solitario versionar nuestro código en una máquina remota es una tarea sencilla que aporta grandes beneficios. Cómo siempre me gustaría saber cómo lo haces tú, qué haces distinto, si este artículo te ha ayudado… Si te animas a compartir deja un comentario.

Contenido relacionado

Una respuesta a “Crear un repositorio remoto en Git desde archivos locales”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *