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.