Git es un software de control de versiones que ayuda a los programadores a mantener versiones del código fuente, es una alternativa a Subversion. Git existe desde hace varios años, fue creado por Linus Trovals el mismo creador de Linux, pero hasta hace poco está ganando muchos seguidores y cada vez son más los proyectos Open Source que antes utilizaban SVN que están usando Git, en el sitio Github podemos encontrar miles de proyectos.

Muchas personas consideran que Git es demasiado confuso o complejo para ser una alternativa para el control de versiones. Sin embargo, Git está creaciendo en la adopción. Así que si deseas empezar a trabajar con Git, con los siguientes comandos basados en esta guía podrás manejar más de 80% de las acciones en Git.

Comenzando

Para usar Git, tendrás que configurar un repositorio. Puedes usar un directorio existente para hacer un repositorio Git, o crear un directorio nuevo.

Para convertir el directorio actual un repositorio Git que sólo tienes que ejecutar init.

git init

Para crear un nuevo directorio y a la vez convertirlo a repositorio

git init nuevacarpeta

De aquí en adelante vamos a asumir que estás en la raíz del repositorio Git a menos que se indique lo contrario.

Agregando nuevos archivos

Asi que tenemos el repositorio pero nada dentro de él, Puedes agregar archivos con el comando add

git add nombredearchivo

Para agregar cualquier cosa dentro de tu directorio prueba el comando git add ...

Confirmando una versión (Commiting)

Ahora que hemos añadido archivos, queremos que éstos realmente se almacenen en el repositorio Git. Para esto los enviamos utilizando el comando commit.

git commit -m "Agregando archivos"

Si no se coloca la -m te pedirá escribir el mensaje por ti mismo.

Editando archivos

Una vez que hayas realizado cambios en algunos archivos, puedes ejecutar git status para ver qué va a pasar en el commit. Verás que hay una lista de archivos modificados, y un mensaje como el siguiente:

no changes added to commit (use "git add" and/or "git commit -a")

Entonces, ejecutar git commit no hará nada a menos que explícitamente añadas archivos al commit con git add. Si estás buscando el comando de confirmación para confirmar de forma automática las modificaciones locales usamos la opción -a.

git commit -a -m "Algunos archivos cambiaron"

O si te gustaría tener sólo ciertos archivos, y todavía no has ejecutado git add puedes pasar archivos específicos.

git commit -m "Cambios en algunos archivos" archivo1 archivo2

Te en cuenta que -a no va a confirmar (hacer commit) a los archivos nuevos, solamente a los archivos que han sido modificados.

Publicando tu repositorio

Para poner el repositorio en un servidor vamos a empezar por hacer un repositorio desnudo (bare), y subirlo a un servidor.

cd /tmp 
git clone --bare ~/your/repo/path project.git scp -r project.git ssh://example.com/~/www/

Ahora bien, si tenemos un par de confirmaciones (commits) y queremos ponerlas a esa ubicación:

git push ssh://example.com/~/www/project.git

Si no te gusta escribir la URI cada vez puedes aprovechar aprovechar las ventajas de un proyecto clonado que recuerda de dónde vino.

cd .. 
git clone ssh://example.com/~/www/project.git project

Ahora git push empujará a la URI a partir de la cual fue clonada. Puedes hacer esto de forma manual mediante la edición de .git/config en tu repositorio.

Obteniendo cambios de una versión

Si ya has empujado algo sl servidor, puedes obtenerlo con el comando pull

git pull

Descargará los cambios y los combinará. Para no no jalar desde una ubicación por defecto simplemente especifícia una URL.

git pull http://git.example.com/project.git

Otros temas más avanzados

Commits

Tal vez habrás notado que Git piensa en confirmaciones «commits». Estos se identifican por una hash. Puedes ver el historial y los valores hash con git log. Cada commit implica modificaciones, los nuevos archivos y los archivos a ser eliminadas. add va a poner un archivo en el commit. git reset HEAD va a eliminar todo del commit planeado, pero no cambiará los archivos.

Eliminar

Si desea eliminar un archivo desde el repositorio, sacándolo de futuros commits usamos rm.

git rm file

Crear ramas y fusionarlas

Las ramas se hacen a nivel local y son rápidas. Para crear una nueva rama se utiliza el comando branch.

git branch test

El comando branch no nos mueve dentro de la rama, solamente la crea. Por lo tanto, utilizamos el comando checkout para cambiar ramas.

git checkout test

La primera rama, se llama «master».

git checkout master

Mientras que en la rama que puede hacer commit los cambios que no se verán reflejados en la rama master. Cuando hayas terminado, o quieras enviar cambios a la Master, regresa a la rama Master y usa el comamdo merge.

git checkout master git merge test

Si ya has hecho los cambios puedes eliminar la rama con la bandera -d.

git branch -d test

Viajar a través del tiempo

Puedes regresar a versiones anteriores rápidamente usando el comando checkout.

git checkout HASH

Los cambios Uncommited viajarán contigo.

Esconder cambios para después

Cuando te mueves entre las ramas los cambios locales se mueven contigo. A veces se quiere cambiar las ramas, pero no quieres hacer commit o llevar esos cambios contigo. El comando stash te permite poner los cambios en un almacén seguro.

git stash

Puede recuperarlo pasando un el argumento apply o pop.

git stash pop

Quieres aprender más sobre Git, entonces imprime esta referencia rápida de Git y mantenla a la vista: Git Cheat Sheet.