Last active
March 22, 2017 11:32
-
-
Save marioblas/5c950cc6dcf382059447 to your computer and use it in GitHub Desktop.
🔀 Git cheat sheet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################### | |
# EMPEZANDO ################################################################### | |
############################################################################### | |
# Configurar email y nombre | |
git config --global user.name "John Doe" | |
git config --global user.email "[email protected]" | |
# Crear un nuevo repositorio | |
git init | |
# Clonar un repositorio remoto | |
git clone username@host:/path/to/repository | |
git clone https://github.com/<user>/<repository> | |
git clone [email protected]:<user>/<repository>.git | |
git clone <url> | |
############################################################################### | |
# STATUS, ADD & COMMIT ######################################################## | |
############################################################################### | |
# Comprobar el estado de los archivos | |
git status | |
# Comprobar el estado de los archivos (formato corto) | |
git status -sb | |
# Seguimiento de nuevos archivos | |
git add <filename> | |
# Preparar archivos modificados | |
git add . | |
# Preparar archivos modificados y eliminados | |
git add -u . | |
# Confirmar los cambios | |
git commit -m "Commit message" | |
# Cerrar incidencias mediante mensajes de commit (Github, Bitbucket...). | |
# Usando una de las palabras clave fix/fixes/fixed, close/closes/closed o resolve/resolves/resolved | |
# Seguida del número de la incidencia | |
git commit -m "Commit message, <keyword> #<issue-number>" | |
# Commits vacíos | |
git commit -m "Commit message" --allow-empty | |
############################################################################### | |
# REPOSITORIOS REMOTOS ######################################################## | |
############################################################################### | |
# Añadir un repositorio remoto a nuestro repositorio local (llamado "origin" por defecto) | |
git remote add origin <https/ssh/url> | |
# Ver los repositorios remotos | |
git remote -v | |
# Obtener mas detalles de un repositorio remoto | |
git remote show <name> | |
# Enviar cambios al repositorio remoto (llamado "origin" por defecto) | |
git push origin master | |
git push origin <branch> | |
# Enviar todas las ramas y etiquetas al repositorio remoto | |
git push --all origin | |
# Actualizar el repositorio local (ramas y commits...) | |
# No tiene ningún efecto en el trabajo de desarrollo local. Es una forma segura de revisar commits antes de integrarlos. | |
git fetch | |
# Actualizar el repositorio local eliminando las referencias a las ramas remotas que ya no existen | |
git fetch --prune | |
# Actualizar el repositorio local integrando los cambios (fetch + merge) | |
git pull | |
############################################################################### | |
# RAMAS ####################################################################### | |
############################################################################### | |
# Mostrar las ramas locales | |
git branch | |
# Mostrar las ramas remotas | |
git branch -r | |
# Mostrar todas las ramas (locales y remotas) | |
git branch -a | |
# Mostrar el nombre de la rama actual | |
git rev-parse --abbrev-ref HEAD | |
# Crear una nueva rama (cambiándonos a ella) | |
git checkout -b <branch-name> | |
# Crear una nueva rama a partir de un commit (cambiándonos a ella) | |
git checkout -b <branch-name> <commit> | |
# Cambiarnos a una rama | |
git checkout <branch> | |
# Volver a la rama anterior | |
git checkout - | |
# Obtener una rama remota | |
git checkout -t origin/<branch> | |
# Renombrar una rama local | |
git branch -m <branch> <new-name> | |
# Renombrar la rama local actual | |
git branch -m <new-name> | |
# Borrar una rama local | |
git branch -d <branch> | |
# Borrar una rama remota | |
git push origin :<branch> | |
############################################################################### | |
# CHERRY PICK, MERGE & REBASE ################################################# | |
############################################################################### | |
# Integrar un commit a nuestra rama activa | |
git cherry-pick <commit> | |
# Cancelar el cherry-pick y volver al estado anterior | |
git cherry-pick --abort | |
# Fusionar otra rama a nuestra rama activa | |
git merge <branch> | |
# Mostrar las ramas que están fusionadas con nuestra rama activa | |
git branch --merged | |
# Mostrar las ramas que no están fusionadas con nuestra rama activa | |
git branch --no-merged | |
# Actualizar la rama actual al estado de la rama o commit indicados | |
git rebase <branch/commit> | |
############################################################################### | |
# DIFF ######################################################################## | |
############################################################################### | |
# Mostrar los cambios preparados para el commit | |
git diff --cached | |
# Mostrar las diferencias entre una rama local y una rama remota | |
# Ej.: git diff master..origin/master | |
git diff <local-branch>..<remote-branch> | |
############################################################################### | |
# STASH ####################################################################### | |
############################################################################### | |
# Guardar en una pila provisional nuestros cambios (desde el ultimo commit) para recuperarlos luego | |
git stash | |
# Guardar nuestros cambios usando un mensaje personalizado (por defecto git utiliza el mensaje del commit actual) | |
git stash save "Custom stash message" | |
# Mostrar la lista de stashes. | |
# Cada item tiene la siguiente estructura (donde 'n' es el número del stash): | |
# stash@{n}: WIP on <branch>: <sha1> <commit-message> | |
git stash list | |
# Mostrar los cambios almacenados en el stash indicado | |
git stash show stash@{n} | |
# Aplicar los cambios del stash indicado | |
git stash apply stash@{n} | |
# Aplicar los cambios del stash indicado borrándolo de la pila en caso de no haber conflictos | |
git stash pop stash@{n} | |
# Borrar el stash inicado de la pila | |
git stash drop stash@{n} | |
# Borrar el último stash de la pila | |
git stash drop | |
# Borrar todos los stash de la pila | |
git stash clear | |
############################################################################### | |
# ETIQUETAS ################################################################### | |
############################################################################### | |
# Mostrar las etiquetas | |
git tag | |
# Crear una etiqueta ligera | |
git tag <tag-name> | |
# Crear una etiqueta anotada | |
git tag -a <tag-name> -m "Tag message" | |
# Etiquetar un commit mas tarde | |
git tag <tag-name> <commit> | |
# Enviar una etiqueta al repositorio remoto | |
git push origin <tag-name> | |
# Enviar todas las etiquetas al repositorio remoto | |
git push origin --tags | |
############################################################################### | |
# LOGS ######################################################################## | |
############################################################################### | |
# Mostrar el historial de commits (ID, autor, fecha, mensaje) | |
git log | |
# Mostrar el historial de commits (formato corto) | |
git log --pretty=oneline | |
# Mostrar el historial de commits (formato corto y SHA corto) | |
git log --oneline | |
# Mostrar el historial de commits (ver los ficheros que han cambiado) | |
git log --name-status | |
# Mostrar el historial de commits (ver los ficheros que han cambiado con el número de lineas insertadas y borradas) | |
git log --stat | |
# Mostrar el historial de commits (ver los ficheros que han cambiado con sus modificaciones) | |
git log -p | |
# Mostrar el historial de commits (ver nombres de ramas o etiquetas) | |
git log --decorate | |
# Mostrar el historial de commits (ver estilizado en ASCII; ramas, etiquetas, autores...) | |
git log --all --graph --pretty=format:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative | |
# Mostrar el número total de commits del repositorio (usando el comando `wc`) | |
git log --oneline --all | wc -l | |
# Buscar en el historial los commits de un autor determinado | |
git log --author=johndoe | |
# Buscar en el historial los commits que contienen algún término en el mensaje | |
git log --grep="Something in the commit message" | |
############################################################################### | |
# DESHACER/MODIFICAR COSAS #################################################### | |
############################################################################### | |
# Deshacer la modificación de uno o varios ficheros (sin commitear) | |
git checkout -- <file(s)> | |
# Deshacer la preparación de todos los ficheros | |
git reset HEAD | |
# Deshacer la preparación de uno o varios ficheros | |
git reset HEAD <file(s)> | |
# Deshacer un commit (generando un nuevo commit que deshace los cambios) | |
git revert <commit> | |
# Modificar el último commit (si nos olvidamos de añadir algún archivo o nos equivocamos en el mensaje...) | |
# Abrirá nuestro editor permitiendonos cambiar el mensaje del commit mas reciente | |
git commit --amend | |
# Modificar el último commit indicando el mensaje directamente. | |
git commit --amend -m "Commit message" | |
# Modificar el último commit reutilizando el mensaje del commit mas reciente | |
git commit --amend --reuse-message=HEAD | |
# Modificar un commit que ya hemos subido a una rama remota | |
# AVISO: sobreescribirá la rama remota con el estado de la rama local, | |
# si hay commits en la rama remota que no tenemos en la rama local se perderán. | |
# AVISO: cuidado con modificar commits que ya hemos compartido con otras personas, al modificar un commit cambia su SHA, | |
# lo que supone un problema si otra persona tiene una copia del commit antiguo... | |
git push -f <remote> <branch> | |
# Volver a un commit anterior | |
git checkout <commit> | |
############################################################################### | |
# ELIMINAR/IGNORAR FICHEROS ################################################### | |
############################################################################### | |
# Eliminar un fichero del directorio de trabajo | |
git rm <file> | |
# Eliminar todos los ficheros (borrados en el disco) del directorio de trabajo | |
git rm $(git ls-files --deleted) | |
# Ignorar un fichero que ya ha sido inicializado/añadido al repositorio (conservándolo) | |
git rm --cached <file> | |
# Ignorar todos los ficheros del .gitignore que ya han sido inicializados/añadidos al repositorio (conservándolos) | |
# Nota: después `git add .` y `git commit -m ".gitignore is now working"` | |
# Ref: http://stackoverflow.com/questions/1139762/ignore-files-that-have-already-been-committed-to-a-git-repository | |
git rm -r --cached . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################### | |
# CONFIGURACIÓN ############################################################### | |
############################################################################### | |
# Configurar email y nombre | |
git config --global user.name "John Doe" | |
git config --global user.email "[email protected]" | |
# Mostrar la configuración | |
git config --list | |
# Mostrar la configuración global | |
cat ~/.gitconfig | |
# Mostrar la configuración local (dentro del proyecto) | |
cat .git/config | |
# Añadir más color al resultado | |
git config --global color.ui 1 | |
# Mostrar el log en una linea por commit | |
git config --global format.pretty oneline |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################### | |
# CREAR UN REPOSITORIO EN GITHUB DESDE LA TERMINAL ############################ | |
############################################################################### | |
# Crear el repositorio en Github (Github API v3) | |
curl -u '<user>' https://api.github.com/user/repos -d '{ "name": "<repository>" }' | |
# Añadir el repositorio remoto de Github a nuestro repositorio local | |
git remote add origin [email protected]:<user>/<repository>.git | |
# Enviar cambios del repositorio local a Github | |
git push origin master | |
############################################################################### | |
# ACTUALIZAR UN FORK ########################################################## | |
############################################################################### | |
# Añadir como remoto el repositorio orignal de Github a nuestra copia local (llamándolo "upstream") | |
git remote add upstream https://github.com/<original-user>/<original-repository>.git | |
# Actualizar todas las ramas desde el repositorio original | |
# Los commits se guardarán en la rama local "upstream/master" | |
git fetch upstream | |
# Asegurarnos de que estamos en nuestra rama "master" | |
git checkout master | |
# Sobreescribir nuestra rama "master" con la rama "upstream/master" | |
# NOTA: si no queremos sobreescribir el historial del proyecto (porque otra persona lo haya clonado, etc.) | |
# usar `git merge upstream/master` en vez rebase... | |
git rebase upstream/master | |
# Subir el proyecto a nuestro repositorio | |
# NOTA: si hemos utilizado merge en el paso anterior no es necesario forzar el push (opción -f) | |
git push -f origin master |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
excelllent.thanks for sharing