git - la guia sencilla

simplemente una guia sencilla para comenzar con git. nada complicado

Tweet

by Roger Dudler (translation by @lfbarragan)
creditos a @tfnico, @fhd and Namics
esta guia en deutsch, english, français, italiano, nederlands, português, русский, 日本語, 中文
por favor reporta cualquier problema en github

configuracion

Descarga git para OSX

Descarga git para Windows

Descarga git para Linux

crea un repositorio nuevo

crea un directorio nuevo, abrelo y ejecuta
git init
para crear un repositorio de git nuevo.

hacer checkout a un repositorio

crea una copia local del repositorio ejecutando
git clone /path/to/repository
al utilizar un servidor remoto, el comando sera
git clone username@host:/path/to/repository

flujo de trabajo

tu repositorio local esta compuesto por tres "arboles" administrados por git. el primero es tu Directorio de trabajo el cual contiene los archivos. el segundo es el Index el cual actua como un area intermedia y finalmente el HEAD el cual apunta a el ultimo commit realizado.

add & commit

Puedes proponer cambios (agregarlos a el Index) usando
git add <filename>
git add *
Este es el primer paso en el flujo de trabajo basico. Para en realidad hacer commit a estos cambios usa
git commit -m "Commit message"
Ahora el archivo esta incluido en el HEAD, pero no aun en tu repositorio remoto.

envio de cambios

Tus cambios estan ahora en el HEAD de tu copia local. Para enviar esos cambios a tu repositorio remoto ejecuta
git push origin master
Reemplaza master por la rama a la cual desees enviar tus cambios.

Si no has clonado un repositorio existente y quieres conectar tu repositorio a un repositorio remoto, necesitas agregarlo con
git remote add origin <server>
Ahora puede subir tus cambios al repositorio remoto selecionado

ramas

Las ramas son utilizadas para desarrollar funcionalidades aisladas unas de otras. La rama master es la rama por "defecto" cuando creas un repositorio. Usa otras ramas para el desarrollo y fusionalas de regreso a la rama principal al terminar.

crea una nueva rama llamada "feature_x" y cambiate a ella usando
git checkout -b feature_x
regresa a la rama principal
git checkout master
y borra la rama
git branch -d feature_x
una rama no esta disponible para los demas a menos que subas (push) la rama a tu repositorio remoto
git push origin <branch>

actualiza & fusiona

para actualizar tu repositorio local al commit mas nuevo, ejecuta
git pull
en tu directorio de trabajo fetch y merge cambios remotos.
para fusionar otra rama a tu rama activa (por ejemplo master), utiliza
git merge <branch>
en ambos casos git intenta auto fusionar cambios. Desafortunadamente, esto no es posible todo el tiempo y resulta en conflictos. Tu eres responsable de fusionar esos conflictos manualmente al editar los archivos mostrados por git. Luego de modficarlos, necesitas marcarlos como fusionados con
git add <filename>
antes de fusionar cambios, tambien puedes dar un vistazo previo usando
git diff <source_branch> <target_branch>

etiquetas

es recomendado crear etiquetas para cada version publicada de un software. esto es un concepto conocido, el cual tambien existe en SVN. Puedes crear una nueva etiqueta llamada 1.0.0 ejecutando
git tag 1.0.0 1b2e1d63ff
el 1b2e1d63ff se refiere a los 10 caracteres de el commit id al cual quieres referirte con tu etiqueta. Puedes obtener el commit id con
git log
tambien puedes usar menos caracteres que el commit id, pero debe ser un valor unico.

reemplaza cambios locales

En caso de que hagas algo malo (que de seguro nunca pasa ;) puedes reemplazar cambios locales usando el comando
git checkout -- <filename>
esto reemplaza los cambios en tu arbol de trabajo con el ultimo contenido de HEAD. Los cambios que ya han sido agregados al indice, asi como tambien nuevos archivos, se mantendran sin cambio.

Si por otro lado quieres deshacerte de todos los cambios locales y commits, puedes traer la ultima version del servidor y apuntar a tu copia local principal de esta forma
git fetch origin
git reset --hard origin/master

datos utiles

Interfaz grafica por defecto
gitk
colores especiales para la consola
git config color.ui true
mostrar solo una linea por cada commit en la traza
git config format.pretty oneline
agregar archivos de forma interactiva
git add -i

enlaces & recursos

clientes graficos

guias

comentarios