Está en la página 1de 36

---

+++
QU ES GIT?
Lo primero que nos preguntamos es qu es exactamente Git.
Git es un sistema de control de
versiones distribuido de cdigo
abierto diseado para ser
rpido y eciente
- Un sistema de control de versiones permite a sus usuarios almacenar revisiones diferentes
de un mismo archivo y compararlas, restaurarlas y, a veces, mezclarlas.
POR QU GIT?
No es Subversion
(o CVS, o RCS, o copiar directorios)
- Subversion fue creado hace ms de diez aos como evolucin de CVS (que era una
evolucin de RCS), pero al intentar ser una evolucin, era un simple parche de su padre.
Garantiza la integridad de los datos
Git utiliza hashes SHA1 y en ocasiones criptografa para garantizar que todo el mundo tiene
los mismos datos y que estos no han sido modicados sin el conocimiento de los usuarios.
Quiz para un desarrollo personal esto no tenga sentido, pero para proyectos open source y
empresas s lo tiene.
Sin repositorio central
Frente a SCM antiguos Git no necesita de un repositorio central o cannico, aunque tampoco
impide designar uno de los clones del repositorio como cannico. Esto permite una
exibilidad imposible con otros sistemas, y muchas ventajas.
Cada usuario tiene un backup
completo del repositorio
Los repositorios de cada usuario son un clon completo, y no una copia parcial de la ltima
versin. En el caso de fallo catastrco de un supuesto repositorio central, no es necesario
ms que clonar un repositorio de uno de los usuarios.
Se puede trabajar ofine
El disponer de un repositorio completo, un usuario puede realizar todas las operaciones que
desee con su copia local, y sincronizarla con otras copias cuando vuelva a estar conectado.
Es rpido!
Al realizar todas las operaciones en local, no es necesario esperar al servidor para ver un log
de cambios, comparar con una versin anterior y otras operaciones.
PRIMEROS PASOS
Si habis instalado Xcode 4 ya disponis de un Git suciente moderno para utilizar, y no hay
que hacer mucho ms.
Personalmente el soporte de Xcode 4 me parece de broma. La vista de comparar versiones es
la nica que posiblemente se salva, y no es tan buena. Ni siquiera es capaz de manejar muy
bien conictos en el archivo de proyecto, lo que hace que el 50% de la veces casque.
GITX (L)
http://gitx.laullon.com
Mi recomendacin es utilizar la Terminal y GitX. GitX es un cliente grco para Git, muy bien
enfocado y sencillo. No puede hacer todas las cosas, pero las que hace, las hace muy bien.
Hay muchas versiones de GitX. La original est ms o menos abandonada. Luego apareci la
de brotherbard, y la que utilizo ltimamente es la de Laulln.
Esta es la vista de para hacer commits. Cuando trabajo con Xcode siempre mantengo una
terminal en el directorio por si necesito teclear algn comando y GitX con el proyecto abierto.
INSTALACIN
http://git-scm.com
Si queris una versin ms moderna podeis instalar Git desde el cdigo fuente o un sistema
de paquetes como Homebrew.
$ git config --global user.name "Juan Prez"
$ git config --global user.email juan.perez@example.com
Algo que no he encontrado como hacer en Xcode. Esto toca hacerlo en el Terminal. Slo es
necesario hacerlo una vez.
$ git config --global core.editor "mate -w"
# o "nano -w"
# o "emacs"
# o "vim"
Otras conguraciones globales si os gusta trabajar en la terminal es elegir el editor que Git
invocar cuando necesite que editeis algn mensaje de commit o similares
$ git config --global merge.tool opendiff
Y la herramienta que utilizar para mostrar las mezclas conictivas (opendi! es una
herramienta grca que se instala con Xcode)
$ git config --global color.ui auto
Y nalmente para darle un toque de color a esa triste terminal.
UN WORKFLOW
Hay muchos posibles workows con Git. Cada uno adecuando a un modo de desarrollar y a
un tipo de equipo. El kernel de Linux no utiliza repositorio centrales y forma una especie de
pirmide de responsables y utiliza pull requests mediante el correo electrnico. En
empresas lo normal es un repositorio central. Y hay muchas ms. Git te da la libertad de
disear tu propio workow.
$ mkdir PajaritosCabreados; cd PajaritosCabreados
$ git init
Initialized empty Git repository in /Users/daniel/
PajaritosCabreados/.git/
$
GIT INIT
Desde la terminal crear un repositorio es tan sencillo como crear un directorio y ejecutar git
init dentro de l. Git crear un directorio oculto dnde almacenar toda la informacin que l
necesite.
Desde Xcode, cuando se crea un nuevo proyecto y vamos a elegir un directorio para
almacenarlo se puede elegir crear un repositorio para el proyecto. A menos de que tengis
una razn muy buena, todos los nuevos proyectos deberan estar bajo control de versiones,
aunque simplemente sea local.
Vamos a crear nuestro primer archivo, en el que incluiremos algn contenido.
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be
committed)
#
# main.m
nothing added to commit but untracked files present
(use "git add" to track)
$
GIT STATUS
Desde la terminal, en cualquier momento podemos ejecutar git status para comprobar en
que estado estn nuestros archivos. Git incluye mucha informacin en l: la rama en la que
estamos, el nmero de commits por delante o por detrs de la rama del repositorio remoto,
pero sobre todo el estado de los archivos. En este momento lo que nos dice es que hay un
archivo main.m del que no sabe nada.
$ git add main.m
$
GIT ADD
La primera orden a aprender es git add. Git no incluye ningn contenido al repositorio al
que no hayamos hecho un git add. La forma ms normal es git add nombre.archivo, que
aade todos los cambios del archivo al staging area de Git.
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: main.m
#
$
Si ejecutamos git status a continuacin veremos que Git lo marca como new le.
Pero me he dado cuenta de que me faltaba una pequea cosa, as que voy a editar de nuevo
el archivo y aadir una lnea ms.
$ git status
# On branch master
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: main.m
#
# Changed but not updated:
# (use "git add <file>..." to update what will be
committed)
# (use "git checkout -- <file>..." to discard changes
in working directory)
#
# modified: main.m
#
$
En este momento si ejecutamos git status veremos algo curioso: un archivo est en dos
estados para Git: nuevo y modicado. Esta es una de las principales diferencias de Git, y una
de sus mejores caractersticas. Git no sigue a los archivos, sino a los contenidos; y el archivo
main.m tiene un contenido que hemos aadido al staging area, pero otro contenido (la lnea
de la anterior diapositiva) que no, as que considera que el archivo est modicado. Podemos
aadir esa lnea haciendo otro git add.
GIT COMMIT
$ git commit
Finalmente, para crear una nueva revisin se ejecutar git commit, que toma todos los
cambios del staging area y crea una revisin con ellos. Ningn cambio en el directorio de
trabajo que no est en el staging area se incluir en la revisin.
Git nos abrir nuestro editor de texto dnde podremos escribir una pequea descripcin del
cambio realizado y sus motivos.
GIT COMMIT
$ git commit
[master (root-commit) 9108af0] Main function
1 files changed, 8 insertions(+), 0 deletions(-)
create mode 100644 main.m
$
RINSE AND REPEAT
Ya solo queda repetir el proceso de modicar los archivos, aadir los cambios al staging
area y crear las nuevas revisiones.
AYUDA!
Git es muy amplio, esto es el proceso ms sencillo y habitual, pero falta mucho por explicar
como los remotos, las ramas y muchas otras cosas.
Si necesitis ayuda tenis varios recursos a vuestra disposicin.
$ git help <orden>
$ git <orden> --help
El primero es la ayuda en lnea de Git. Con git help o git --help se pueden leer las pginas
de manual de Git. Las pginas de los mandatos bsicos estn muy bien redactadas e incluyen
ejemplos en la parte nal.
DOCUMENTACIN
http://git-scm.com/documentation
Si prefers Internet el sitio de Git incluye mucha documentacin y enlaces a tutoriales propios
y externos.
PRO GIT
http://progit.org
Finalmente existe Pro Git, un libro gratuito que trata Git desde novato a experto. Existe una
versin en ePub muy bien preparada para el iPad.

También podría gustarte