Configuración
Config de usuario
git config --global user.name "Your Name" git config --global user.email "[email protected]" git config --global core.editor vim git config --list # ver todas las opciones
Init y Clone
git init # nuevo repo en dir actual git clone # copiar repo remoto git clone dir # clonar en dir/
Básico
Estado y preparación
git status # estado del árbol de trabajo git add file.txt # preparar un archivo git add . # preparar todos los cambios git add -p # preparar de forma interactiva
Commits
git commit -m "msg" # commit de cambios preparados git commit -am "msg" # preparar tracked + commit git commit --amend # editar último commit
Diff
git diff # cambios sin preparar git diff --staged # cambios preparados git diff HEAD~1 # vs commit anterior git diff branchA branchB
Ramas
Gestión de ramas
git branch # listar ramas locales git branch -a # listar todas (incl. remotas) git branch feat # crear rama git branch -d feat # eliminar (seguro) git branch -D feat # eliminar (forzado)
Cambiar de rama
git checkout feat # cambiar a rama git checkout -b feat # crear + cambiar git switch feat # cambiar (moderno) git switch -c feat # crear + cambiar (moderno)
Merge
git merge feat # merge feat en rama actual git merge --no-ff feat # crear siempre merge commit git merge --abort # cancelar merge con conflicto
Remoto
Gestionar remotos
git remote -v # listar remotos git remote add origin # agregar remoto git remote remove origin # eliminar remoto
Fetch, Pull, Push
git fetch origin # descargar actualizaciones git pull # fetch + merge git pull --rebase # fetch + rebase git push origin main # push al remoto git push -u origin feat # push + establecer upstream
Log
Ver historial
git log # historial completo git log --oneline # formato compacto git log --oneline -10 # últimos 10 commits git log --graph --oneline --all # gráfico de ramas git log -p # mostrar parches (diffs) git log --stat # mostrar estadísticas de cambios
Filtrar log
git log --author="Alice" git log --since="2024-01-01" git log -- path/file # commits que tocan el archivo git log -S "keyword" # buscar cambios en contenido
Stash
git stash # guardar cambios de trabajo git stash push -m "wip" # guardar con mensaje git stash list # listar todos los stashes git stash pop # aplicar + eliminar stash superior git stash apply # aplicar pero conservar stash git stash drop # eliminar stash superior git stash clear # eliminar todos los stashes
Deshacer cambios
Desestabilizar y descartar
git restore file.txt # descartar cambios de trabajo git restore --staged file.txt # desestabilizar archivo git checkout -- file.txt # descartar (legado)
Reset
git reset --soft HEAD~1Deshacer commit, conservar staged
git reset --mixed HEAD~1Deshacer commit, conservar working (por defecto)
git reset --hard HEAD~1Deshacer commit, descartar todos los cambios
Revert
git revert # nuevo commit deshaciendo cambios git revert HEAD # deshacer último commit (seguro)
Tags
git tag v1.0 # tag ligero git tag -a v1.0 -m "Release" # tag anotado git tag # listar tags git push origin v1.0 # push de tag único git push origin --tags # push de todos los tags git tag -d v1.0 # eliminar tag local
.gitignore
Ejemplos de patrones
# .gitignore *.log # todos los archivos .log build/ # directorio build !important.log # excepción (sí rastrear) /TODO # solo TODO en raíz doc/**/*.pdf # pdfs en subárbol doc/
Patrones comunes
*.extTodos los archivos con esa extensión
dir/Directorio completo
!patternNegar (re-incluir)
**/nameCoincidir en cualquier subdirectorio
?Comodín de un solo carácter