martes, 19 de marzo de 2013

Comandos principales para Git y Mercurial


Tips para Linux


Hola a todos, como están, nuevamente por acá, esto es mas que nada un recordatorio para mí :D
Generalmente estoy acostumbrado al uso del repositorio de versiones Git, suelo utilizar github.com, o en ocasiones también bitbucket.org o code.google.com, pero actualmente en mí trabajo estamos usando Mercurial, así que este es un pequeño recordatorio sobre los comandos, aunque suelen ser bastantes similares a los de Git:
(si todavía no están utilizando algún tipo de repositorio de versiones, se los recomiendo mucho)
Antes de arrancar, estas serían sus definiciones:
http://es.wikipedia.org/wiki/Mercurial
http://es.wikipedia.org/wiki/

Mercurial
hg clone : clona el repositorio, pasándole la url
hg status  ,  hg st  : mira el estado de los archivos en el repo
hg push : pushea los cambios del commit
hg incoming : verifica si hay cambios para descargar
hg pull : este descarga los archivos o modificaciones del servidor
hg update : actualiza el repo local con las actualizaciones descargadas
hg add . : como en git, agrega los cambios a comitear
hg remove : remueve el archivo del repo
hg rename : renombra archivos en el repo
hg log : mira el log de los commit
hg -v : podes ver la lista de comandos
hg log -r 0:  ver el log al revez

Bueno de yapa, les dejo una pequeña lista también de los comando mas importantes en Git:

Basic
git status: muestra los cambios en el branch actual
git log -3: muestra el log de los últimos 3 cambios
git push [origin HEAD:refs/for/master]: guarda los cambios en el repositorio remoto
git pull: trae la ùltima version del servidor
git rebase master: hace que los se cuelguen de la rama del master actual

Config
git config --global user.name "Nombre de usuario"
git config --global user.email correoelectronico@gmail.com
git config --global color.status auto
git config --global color.branch auto 

Branch
git branch -a: muestra los branches
git branch task_111: crea el branch task_111
git branch -d task_111: borra el branch task_111
git branch -D task_111: borra el branch task_111, aun si hay còdigo no pusheado
git push origin :branch-a-remover

Checkout
git checkout task_111: pasa al branch task_111, en particular git checkout master pasa al branch principal
git checkout -b task_111: crea el branch task_111 y se pasa a ese branch
git checkout -f master: se pasa al master y descarta los cambios locales
git checkout master -- build.xml: trae la versión del master del archivo build.xml
git checkout -- nombrearchivo : esto descarta los cambios de ese archivo

Reset
git reset --hard  vuelve a la versión anterior si no realizamos el commit
git reset --hard HEAD^  vuelve a la versión anterior si realizaste el commit

Después del reset, debemos realizar una limpieza:
git clean -fd para eliminar todo los archivos que no tengamos en el repositorio

Add
git add <files>: agrega los archivos que van a ser comiteados

Remove
git diff --diff-filter=D --name-only -z | xargs -0 git rm
Eliminamos del indice, todos los archivos que quitamos del sistema de archivos

Commit
git commit: guarda los cambios en el repositorio local
git commit --amend: modifica el último commit (para revisiones)

Cherry Pick
git cherry-pick master 5c47ace473b397dc8eaf5f57ab40cb0cad2302da: trae del master el commit push indicado
git cherry-pick --abort: cancela el último cherry-pick

Patches
git diff ab533 src/ > some.patch
Crea un parche del código fuente con la revisión ab533.
patch --dry-run -p1 < some.patch
Simula aplicación del parche
patch -p1 < some.patch
aplica el parche

Add other repo
git remote add upstream git://github.com/django/django.git
git fetch
git pull upstream master

 Espero que les haya sido de utilidad, esta conjunto de comandos, vuelvo a repetirles, que les recomiendo mucho la utilización de este tipo de repositorio, y también les recomiendo mucho, explorar proyectos de otras personas, para aprender mirando código de otros, nos vemos en la próxima.

Saludos, Gabriel