Git

software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.

1. Mostrar las diferencias existentes entre master y otro branch.:

git diff master..branch

Sin más, esto es algo que uso constantemente para revisar el trabajo que se ha hecho en el branch y asegurarse que todo está correcto antes de hacer un merge con otra rama.

2. Mostrar el total de commits realizados por los miembros del equipo:

git shortlog -s -n

(554 commits desde que trabajo en el blog de The Next Web. :) )

3. Mostrar un resumen corto del log de commits:

git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --date=short

Este comando mostrará el log de commits con el siguiente formato:

47a6398 root 2012-02-03 Fixed Twitter share popup

Para mostrar solo el ID del commit y el mensaje, puedes hacer:

git log --pretty=oneline

4. Evitar incluir código de depuración en tu commit:

¿Quién no ha olvidado alguna vez quitar todos los  var_dump,  console.log, etc, del código antes de hacer el commit y luego se ha encontrado en producción? Este pre-commit hook evita esta incómoda situación.
https://github.com/borisguery/git-keywords-checker/blob/master/pre-commit

5. Obtener información sobre el repositorio remoto:

git remote show origin

Esto es útil para chequear las urls de Fetch y Push, el estado de tu HEAD, los branches remotos, etc.

6. Colorea la salida de git en consola:

git config --global color.ui true

7. Guardar temporalmente el trabajo no commiteado:

El stash de Git es un lugar que se puede usar para guardar temporalmente los elementos no commiteados, eliminándolos del HEAD. Esto permite realizar operaciones que serían muy engorrosas de otro modo, por ejemplo, si necesitas cambiar de rama para arreglar un bug urgente y no quieres commitear el código que tienes a medias. Para guardar el trabajo en el stash, es tan facil como:

git stash save

De la misma manera, para recuperar los cambios guardados:

git stash pop

Y para mostrar los contenidos del stash:

git stash list

8. Mostrar una consola interactiva para añadir elementos al stage antes de un commit:

git add -p

Área de trabajo
git add archivo (Añade un archivo para versionar)
git add . (Añade todos los archivos del directorio donde ejecutes este comando)
git add *.py (Añade todos los archivos que terminan con .py)

git rm –cached archivo (Elimina el track del archivo en git sin eliminarlo del sistema)
git reset HEAD (Vuelve al último commit)
git checkout — archivo (Deshace los cambios realizados en el archivo llamado archivo)

Branches
git branch (Muestra la lista de branches locales)
git branch -r (Muestra la lista de branches remotos)
git branch -a (Muestra todos los branches, tanto locales como remotos)
git checkout -b nuevobranch (Crea un nuevo branch llamado nuevobranch)
git checkout branchacambiar (Cambiarse al branch bancheacambiar)
git branch -d nuevobranch (Elimina un branch llamada nuevobranch)

Repositorios
git remote -v (Muestra repositorios remotos)
git remote add nombre url (Agrega un repositorio remoto con el alias nombre a partir de la url)
git push origin master (Actualizar el repositorio remote a parte del repositorio actual)
git pull origin master (Actualiza el repositorio local a partir del remoto)

Stash
git stash (Mueve todos los cambios a Stash)
git stash list (Muestra la lista de todos los stash)
git stash apply (Aplicar los archivos del último stash aplicado)

Commits
git commit -m “Crea un commit”. (Genera un commit)
git commit -am “Genera un commit.” (Crea un commit adicionando los archivos sin pasar por staging)
git commit -m –amend (Adiciona nuevos archivos al commit actual)

Logs
git log (Muestra una lista de todos los commits realizados)
git reflog (Muestra estados anteriores de los branches)

Patches
git format-patch nombredelbranch (Crea un patch sobre el branch actual)

Tags
git tag v1.0 (Crea una etiqueta llamada v1.0)