Configurando un repositorio Git en Github

Cristian in Git

June 30, 2008

En Gimmicklab estamos empezando a utilizar un repositorio Git, conectado remotamente a GitHub, para almacenar el código fuente de nuestros proyectos y mantener un control de versiones adecuado.

De entre las diferentes opciones al final nos hemos decantado por Git por su elasticidad y rapidez. El control se hace totalmente a través del terminal y pese a que no hay mucha documentación acerca de los comandos rápidamente te habituas al workflow del sistema.

En nuestro caso git nos permitirá tener una versión de producción e ir trabajando en diferentes ramas de desarrollo, con la posibilidad de unificarlas una vez el desarrollo de cada una se vaya completando.

Ahora os explicaré como instalar git en vuestro equipo y como configurar la conexión a GitHub desde MacOS Leopard.

Instalando Git

El primer paso es instalar Git en vuestro equipo, la forma más sencilla es descargarse la versión para leopard que viene provista de un instalador.

http://code.google.com/p/git-osx-installer/

Una vez instalado podemos pasar a configurarlo, es interesante la idea de crear alias pero de momento sólo aplicaremos unas reglas para dar un poco de estilo a la información que la consola nos escupe y unos shortcuts para ser más ágiles escribiendo los comandos.

Abrimos la consola y escribimos:

git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
git config --global color.interactive auto
git config –global alias.st status
git config –global alias.ci commit
git config –global alias.br branch

Hemos resaltado el color en la información que nos devuelve despues de aplicar los comandos diff, status, branch e interactive.

También hemos creado un shortcuts para los comandos más usados, puedes modificarlos a tu gusto.

Configurando el repositorio remoto

Una vez instalado Git realizaremos las siguientes tareas:

  1. Crear las llaves públicas para conectar GitHub
  2. Asignar GitHub como repositorio remoto para nuestros archivos
  3. Crear un repositorio en GitHub
  4. Subir el contenido al repositorio
Crear las llaves públicas para conectar a GitHub

Si trabajas con repositorios privados necesitarás crear una llave pública y insertarla en tu profile de GitHub.

Abrimos el terminal y tecleamos:

cd ~/.ssh
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa): # press enter here
Enter passphrase (empty for no passphrase): # type in your passphrase here
Enter same passphrase again: # type your passphrase again
Your identification has been saved in /Users/username/.ssh/id_rsa.
Your public key has been saved in /Users/username/.ssh/id_rsa.pub.
The key fingerprint is:
50:13:87:c6:97:af:61:22:dc:ea:3b:6b:67:d4:1b:61 user@host

Hemos creado una llave pública SSH, hemos introducido una contraseña y el terminal nos ha devuelto la localización de la llave pública: en /usuario/.ssh/id_rsa.pub, y la huella de la llave.

Abrimos el fichero con la llave y copiamos el contenido en la página de profile de la cuenta de GitHub.

Asignar GitHub como repositorio remoto para nuestros archivos

Una vez que ya tenemos la llave y se la hemos pasado a GitHub, crearemos un repositorio remoto en GitHub.

Abrimos el terminal.

 cd ~/repositorio/mi_proyecto
git remote add github git@github.com:/git_username/projectname.git

Si abrimos el fichero de configuración de git:

vi .git/config

Se habrán añadido las siguientes líneas:

[remote "github"]
url = git@github.com:git_username/projectname.git
fetch =  +refs/heads/*:refs/remotes/origin/*
push = refs/heads/master:refs/heads/master

Con estos pasos deberías ser capaz de poder conectar a GitHub, vamos antes a ver como creamos un repositorio en GitHub para depositar nuestros archivos.

Crear un repositorio en GitHub

Asumimos que ya tenemos el repositorio creado en GitHub, ahora vamos a inicializarlo y a configurarlo.

Abrimos el terminal y seguimos los pasos que nos indican cuando tratamos a acceder a nuestro repositorio a través del site de GitHub.

Asumimos que tienes en local en tu repositorio, una carpeta mi_proyecto con el contenido del proyecto que queremos subir.

cd ~/repositorio/mi_proyecto
git config --global user.email tuemail@tuemail.com
cd mkdir mi_proyecto
cd mi_proyecto
git init
touch README
git add README
git commit -m 'primer commit'
git remote add origin git@github.com:username/project_name
git push origin master

Hemos creado un directorio en el repositorio remoto, hemos creado un primero archivo Readme que después rellenaremos con las instrucciones iniciales; todo ello en la rama principal (branch) de nuestro proyecto.

Ahora subiremos el contenido del proyecto al repositorio.

git push github master
Enter passphrase for key '/Users/username/.ssh/id_rsa': # enter your passphrase here
updating 'refs/heads/master'
from 000000000000000000000000000000
to   871b8e6c61bc6fca6ee974bc836d70
Also local refs/remotes/origin/master
Generating pack...
Counting objects: 18
Done counting 1019 objects.
Deltifying 1019 objects...
100% (1019/1019) done
Writing 1019 objects...
100% (1019/1019) done
Total 1019 (delta 236), reused 0 (delta 0)
refs/heads/master: 000000000000000000000000000000 > 871b8e6c61bc6fca6ee974bc836d70

Ya tenemos la versión en producción de nuestro proyecto en el repositorio, a partir de este momento lo más razonable es ir subiendo las nuevas revisiones como ramas nuevas que después podremos ir unificando.

Lo harí­amos así­.

git branch #nombre de la rama
git checkout #nombre de la rama
git commit -a #actualiza los commit si o si
git status #te devuelve la lista de ficheros modificados
git add #ficheros con cambios
git push --force #sube los cambios si o si

Ahora ya tenemos una nueva rama de desarrollo en el repositorio, más adelante veremos con un más de detalle el workflow del sistema y los diferentes comandos y propiedades que podemos aplicar, además de ver como podemos unificar las diferentes ramas, creadas y como tageamos las diferentes revisiones.

Yo llevo un día jugando con el sistema y os puedo decir que pese a que es un poco geek por basarse en el terminal, es rápido y práctico.

Recomiendo leerse este manual para sobretodo entender el workflow del sistema, imprescindible para saber en que orden debes aplicar los comandos.

http://www.kernel.org/pub/software/scm/git/docs/user-manual.html

Hay alguien por ahí­ con más experiencia en este tipo de repositorios?

Comments(3)

  1. 1.
    Isaac December 18, 2008 at 6:31 pm

    Que buena guía, muchas gracias por la aportación.

  2. 2.
    Josal August 21, 2009 at 2:50 pm

    Muchas gracias, compañero!

  3. 3.
    alberto February 16, 2010 at 1:02 am

    hola: me estoy adentrando en este mundo de los repositorios, he leído algo sobre esto, pero aun no me queda claro como ver reflejado el trabajo en el servidor, por favor alguien que me ayudara con un ejemplo desde el principio sin omitir detalles de creación, desde la terminal hasta en la cuenta de git hub, se los agradecería mucho.!!

Insert Comment