Skip to content

Instantly share code, notes, and snippets.

@joariasl
Last active April 2, 2024 10:13
Show Gist options
  • Save joariasl/6f566790274db9ddc8a0b768d9d156ff to your computer and use it in GitHub Desktop.
Save joariasl/6f566790274db9ddc8a0b768d9d156ff to your computer and use it in GitHub Desktop.

Apuntes de comandos Git

Source Markdown

By Jorge Arias.

Tabla de contenidos

Obtener Ayuda

git <command> --help
git help <command>
man git-<command>

Configurar

git config --global user.name "John Doe" # Definir nombre global de Git
git config --global user.email johndoe@example.com # Definir email global de Git
git config --list # Listar parámetros de configuración
git config --global core.editor vim # Configurar editor predeterminado
git config --global merge.tool vimdiff # Configurar herramienta para resolver conflictos
git config --global alias.<name> 'command' # Crear un alias para git

Nota: Configuración global se guarda en ~/.gitconfig. Si no se define --global la configuración será para el repositorio y se guardará en .git/config.

Agregar al Staging Area

git add [file|folder] ...
git add -u [file|folder] ... # Agrega automáticamente archivos con seguimiento
git rm [file|folder] ... # Remover archivos de git y disco
git rm --cached [file|folder] ... # Remover del staging area

Comprobar cambios

git status
git status -v # Mostrar con detalle de modificaciones

Comparar cambios

git diff [--cached|--staged] # Preparados contra último commit
git diff <commit1> <commit2> # Entre dos commits
git diff --check # Mostrar espacios agregados que pueden causar problemas. Se recomienda excluir espacios redundantes en líneas.
git diff <commit1> <commit2> [path] # Entre dos commits para un archivo o folder

Commit

git commit # Agregar commit a la historia
git commit -m 'Message' # Agregar con mensaje directamente
git commit --amend # Agregar commit a la historia
# Equivale a git reset --soft HEAD^ y luego git commit -c ORIG_HEAD
git commit [-a|--all] # Agrega todos los archivos agregados y modificados y luego confirma
git commit [-v|--verbose] # Muetra el diff en el editor

Nota: Los commits no se eliminan implícitamente

Log

git log # Mostrar historial de commits
git log --stat # Mostrar con detalle de dirferencias de archivos
git log --since=2.weeks # Mostrar commits más recientes hasta indicado
git log --since=12.hours
git log <branch1>..<branch2> # Mostrar cambios introducidos desde <branch1> a <branch2>
git log <branch1> --not <branch2> # Muestra commits de <branch1> excluyendo los que pertenecen a <branch2>
git log --oneline # En una línea hash y subject
git log --decorate # Incluyendo posición de referencias (ramas/tags)
git log --graph # Mostrar representación gráfica de historia
git log --all # Mostrar todos los commits con referencia

Ramas

Branch

git branch # Mostrar ramas
git branch -vv # Mostrar ramas con SHA1 y commit subject line
git branch <nombre> # Crear rama con puntero a posición actual
git branch -d <nombre> # Eliminar rama (--delete)
git branch -D <nombre> # Forzar eliminar rama (--delete --force)
git branch --merged # Mostrar ramas fusionadas a la actual. Con * si aún no se incorporan últimos cambios
git branch --no-merged # Mostrar ramas que no han sido incorporadas a la actual
git branch -m <new-name> # Mover/renombrar una rama y su correspondiente reflog

Checkout

git checkout <rama> # Cambiar a rama
git checkout -b <rama> # Cambiar a rama y crear si no existe

Merge

git merge <rama> # Fusionar <rama> con posición actual
git merge --no-ff # Fusionar evitando fast-forward

Remotos

Clonar

git clone <repository> [<directory>] # Clonar ruta de repositorio a directorio si se define, sino usa nombre del repositorio

Administrar remotos

git remote show # Ver repositorios remotos
git remote -v # Ver repositorios remotos con detalle
git remote add <name> <repository/url> # Agrega repositorio remoto
git remote rm <name> # Elimina remoto
git remote rename <old-name> <new-name> # Cambiar nombre

Fetch

git fetch <repository> # Descargar objetos y referencias de repositorio remoto

Pull

git pull <repository> <ref> # Hacer Fetch y luego Merge a la rama o referencia remota

Push

git push <repository> <ref> # Publicar cambios de rama o referencia y objetos asociados
git push <repository> --all # Publicar todas las ramas

Tags

git tag # Mostrar etiquetas actuales
git tag -l 'v1.8.5*' # Mostrar buscando expresión regular
git tag -a v1.4 -m 'Mensaje de version' # Crear tag con mensaje opcional

Comandos avanzados (con precaución)

git reflog show # Mostrar log de referencias (Recorrido de HEAD)
git reflog expire --expire-unreachable=<time> # Quitar del reflog commits no referenciados por ramas ni reflog. Predeterminado 30 días, --expire-unreachable=all expira de todos los tiempos.
git gc # Limpiar y optimizar repositorio. Primero limpiar reflog para eliminar commits no referenciados.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment