domingo, noviembre 29, 2009

Git local: crear repositorio para desarrollo local

En su día, cuando empezaba a usar el sistema de control de versiones Git, al buscar cómo funcionar en local con .git para empezar un proyecto, me ocurrió que por lo general no había mucha información de algo tan básico, lo cual para un novato se agradece.
Espero que esto le sirva a alguien.


El repositorio puede estar remoto o en local. Voy a poner las dos, aunque la única diferencia es que en local no hay necesidad de conectar por .ssh.

Crear repositorio Git


Repositorio remoto:
Entrar en el servidor y crear el repositorio:

$ ssh myserver.com
Welcome to myserver.com!

Suponemos que tu servidor ya tieneun directorio /var/git creado donde poner tu nuevo proyecto. Si no es así, necesitarás permisos de administrador: si no los tienes, contacta con tu administrador para que lo haga.

$ mkdir /var/git/myapp.git

Repositorio local:
Bueno, pues esto significa que pones el repo en tu ordenador. Igualmente si vas a hacer esto para programar localmente, conviene usar la misma estructura de directorios por conveniencia. Esto es:

Quizás necesites permisos de administrador para ejecutar lo siguiente, que crea el directorio donde pondremos el repo. Como puedes ver los repos tienen extensión .git (aunque son directorios). El --parents creará el directorio git si no existía: en este caso, casi seguro necesitarás permisos de admin:

$ mkdir --parents /var/git/myapp.git 


Inicializar el repo:

$ cd /var/git/myapp.git
$ git --bare init
Initialized empty Git repository in /var/git/myapp.git


Add the remote repository to your existing local git repo and push:

Añadir el repositorio remoto a tu repositorio local de git. Suponemos que tu sitio está en workspace/myapp

$ cd ~/workspace/myapp

Con lo siguiente configuras la branch master para controlar la branch remota. Puedes ver los cambios de la configuración en el fichero .git/config

$ git remote add origin ssh://myserver.com/var/git/myapp.git

Ahora, añades tu código al repositorio. Esto dice a Git los ficheros que tener en cuenta en el próximo commit. Respecto a CVS por ejemplo, es una diferencia: primero hay que decir qué ficheros entran en el commit, y luego hacer el commit - y posteriormente, cuando uno esté seguro de su código, enviar al repo remoto con push.

$ git add .
$ git commit -m "Primer commit"

En tu repo local, ahora en el contenido de .git/config debería haber algo parecido a esto si es local:

[remote "origin"]
    url = /var/git/myapp.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Si es remoto, el contenido de url será diferente, proviendo de acceso al servidor remoto.

$ git push origin master

Ahora, veremos algo parecido a:

Counting objects: 827, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (806/806), done.
Writing objects: 100% (827/827), 2.15 MiB | 3667 KiB/s, done.
Total 827 (delta 36), reused 0 (delta 0)
To /var/git/myapp.git
 * [new branch]      master -> master


¡Perfecto! Ya has hecho tu primer commit. Puedes mirar si los archivos se han enviado correctamente, mirando en el repo (remoto o local) /var/git/myapp.git/objects

Por otro lado puedes intentar hacer un clone en otro directorio, para ver que funciona bien. Crea un directorio de test y entra en él, entonces haz:

local: git clone /var/git/myapp.git
remoto: git clone user@myserver.com:/var/git/myapp.git

Dirá algo del estilo de:

Initialized empty Git repository in (el directorio en el que estés)
Checking out files: 100% (756/756), done.

Espero que todo haya ido bien.
¡Gitea feliz!

No hay comentarios: