git

# git notes - http://git-scm.com/docs/git-notes
# Anotar un commit 
git notes add -m 'Anotación extra' 72a144e2
# listado de anotaciones
git notes list
# añadir sólo un subconjunto de los últimos cambios -> modo interactivo
# esta variante de add funciona con menus. Vamos escogiendo con la opcion "patch" y cuando terminamos salimos con "quit"
git add -i 

# comparar dos ramas (si la rama es remota, puede hacer falta usar la ruta, origin/ramaX)
# La comparación puede servir como "vista previa" de un merge
git diff rama1..rama2
# si estamos en rama1, se puede omitir:
git diff ..OTRA_RAMA
# También se puede usar un hash para elegir con qué commit comparar

# Excluir del repositorio los ficheros de backup de emacs
# Añadir a .gitignore
*~
.#*

# Registrar cambios: add+commit
# Incluir fichero f
git add f
git commit -m "Consecuencia de aplicar los cambios"
# (una vez en el repositorio, se puede incluir automaticamente todos los ficheros con la opción -a de commit)
# Cambiar el mensaje del ultimo commit
git commit --amend

# deshacer add
git rm --cached
# "Deshacer" ultimo commit
git reset --soft HEAD~1

# Publicar cambios
# normalmente, "donde" es origin, y "rama" es master
git push donde rama

# Descargar cambios (fetch + merge)
git pull 

# Mostrar cambios en un commit
# (con -w ignora cambios solo en espacios en blanco,
# y con --word-diff solo muestra cambios en palabras,
# en lugar de líneas enteras)
git diff COMMIT^ COMMIT


# Mostrar ficheros de un commit:
git show --name-only -r commit_id
git ls-tree --name-only -r commit_id
# Ficheros modificados...
# ...desde ultimo commit
git status
# ...en los ultimos commit
git diff-tree -r commit_id

# Informe de cambios
git log
# ...en una linea
git log --pretty=oneline
# ... para un fichero
git log --follow -p FILE

# Restablecer un fichero...
# ... a la última "versión"
git checkout f
# ...a la versión del commit hash
git checkout hash f

# RAMAS
# cambiar a rama r3
git checkout r3
# crear rama r4 a partir de r3
git checkout -b r4
# fusionar rama r2 con actual
git merge r2

# aplicar un commit de otra rama a la rama actual
git cherry-pick COMMIT

# copiar un fichero de otra rama
git checkout otra_rama fichero.py

# Etiquetas: Versiones / Releases
git tag -a v1.0 -m "Release 1.0"
git push origin v1.0

Hooks

La base para publicar sitios web usando git (ver git website howto)

# En el servidor, editar hooks/post-receive 
# (asegurarse de que tiene permiso de ejecucion...)
#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

Como siempre, para hacer push hay que añadir el origen remoto (en este caso, el servidor web)

Chuletas: SphereDev, Seth Robertson, Publicar una web usando Git, Little things I like to do with git

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *