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:
- Crear las llaves públicas para conectar GitHub
- Asignar GitHub como repositorio remoto para nuestros archivos
- Crear un repositorio en GitHub
- 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)
Que buena guía, muchas gracias por la aportación.
Muchas gracias, compañero!
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