Configuración inicial ⤢ git configConfigura tu nombre, correo o editor una vez para todos los repositorios. git config --global user.name "Ada" ⤢ git config --global aliasDefine un atajo para un comando que escribes a menudo. git config --global alias.co checkout ⤢ git initCrea un repositorio nuevo en la carpeta actual. git init ⤢ git cloneCopia un repositorio remoto a tu máquina. git clone git@github.com:org/repo.git ⤢ git clone --depthCopia solo los commits más recientes de una sola rama. git clone --depth 1 --single-branch git@github.com:org/repo.git Instantáneas básicas ⤢ git statusMuestra qué está preparado, modificado y sin rastrear. git status -sb ⤢ git addPrepara los cambios para que entren en el siguiente commit. git add src/app.ts ⤢ git add -pRevisa los cambios fragmento a fragmento y prepara solo los que aceptas. git add -p src/app.ts ⤢ git add -uPrepara los cambios de todos los archivos rastreados sin añadir archivos nuevos. git add -u ⤢ git commitRegistra los cambios preparados como un commit nuevo. git commit -m "fix: null check" ⤢ git commit --amendReemplaza el último commit por uno corregido. git commit --amend -m "fix: handle empty input" ⤢ git diffMuestra los cambios sin preparar, o los preparados con --staged. git diff --staged ⤢ git diff HEADMuestra todos los cambios desde el último commit, estén preparados o no. git diff HEAD Ramas y fusiones ⤢ git branchLista, crea o elimina ramas. git branch feature-x ⤢ git branch -dElimina una rama fusionada (-D lo fuerza, -a lista todas las ramas). git branch -d feature-x ⤢ git switchCambia de rama (el sustituto moderno de checkout). git switch feature-x ⤢ git switch -cCrea una rama nueva y cambia a ella en un solo paso. git switch -c feature-x ⤢ git checkoutCambia de rama o restaura archivos (el comando antiguo y más amplio). git checkout feature-x ⤢ git mergeTrae los cambios de otra rama a la rama actual. git merge feature-x ⤢ git merge --abortCancela una fusión con conflictos y devuelve la rama a su estado anterior. git merge --abort ⤢ git rebaseReproduce los commits de la rama actual encima de otra rama. git rebase main ⤢ git rebase -iFusiona, reordena o edita commits mientras se reproducen. git rebase -i main ⤢ git cherry-pickCopia un commit concreto de otra rama a esta. git cherry-pick a1b2c3d ⤢ git tagMarca un commit con una etiqueta legible, como una versión. git tag -a v1.2.0 ⤢ git worktreeExtrae otra rama en una carpeta separada al mismo tiempo. git worktree add ../repo-feature feature-x Inspeccionar el historial ⤢ git logRecorre el historial de commits. git log --oneline --graph --decorate ⤢ git log --allRecorre el historial de todas las ramas, no solo la actual. git log --oneline --graph --all ⤢ git showMuestra el diff completo y el mensaje de un commit. git show HEAD ⤢ git blameMuestra quién cambió por última vez cada línea de un archivo. git blame src/app.ts ⤢ git reflogMuestra todos los commits a los que HEAD ha apuntado, incluidos los descartados. git reflog ⤢ git bisectBusca en el historial por mitades para encontrar el commit que rompió algo. git bisect start ⤢ git shortlogResume los commits por autor. git shortlog -sn ⤢ git describeNombra el commit actual contando desde la etiqueta más cercana. git describe --tags Colaboración con remotos ⤢ git remoteLista o añade repositorios remotos. git remote add origin <url> ⤢ git remote -vLista los remotos con sus URLs de fetch y push. git remote -v ⤢ git fetchDescarga cambios del remoto sin tocar tus ramas. git fetch origin ⤢ git fetch --pruneDescarga cambios y elimina las referencias a ramas remotas borradas. git fetch --prune ⤢ git pullDescarga y fusiona los cambios remotos de la rama actual. git pull --rebase ⤢ git pushEnvía los commits locales al remoto. git push -u origin feature-x ⤢ git push --force-with-leaseSobrescribe la rama remota, pero solo si nadie hizo push antes. git push --force-with-lease origin feature-x Deshacer cambios ⤢ git restoreDescarta los cambios del árbol de trabajo, o los saca del índice. git restore src/app.ts ⤢ git restore --stagedSaca un archivo del índice y conserva sus ediciones en el árbol de trabajo. git restore --staged src/app.ts ⤢ git resetMueve la punta de la rama actual y opcionalmente el índice. git reset --hard HEAD~1 ⤢ git revertAñade un commit nuevo que deshace uno anterior (seguro de compartir). git revert HEAD ⤢ git cleanElimina archivos y carpetas sin rastrear. git clean -fd Stash ⤢ git stashGuarda el trabajo sin confirmar y reinicia el árbol de trabajo. git stash -u ⤢ git stash listMuestra todos los stashes que has guardado. git stash list ⤢ git stash applyReaplica un stash y lo conserva guardado. git stash apply stash@{1} ⤢ git stash dropElimina un stash que ya no necesitas. git stash drop stash@{1} ⤢ git stash popReaplica el stash más reciente y lo elimina. git stash pop Archivos y submódulos ⤢ git mvMueve o renombra un archivo y prepara el cambio. git mv old.ts src/new.ts ⤢ git rmElimina un archivo y prepara la eliminación. git rm src/old.ts ⤢ git submoduleRastrea otro repositorio como una carpeta dentro de este. git submodule add git@github.com:org/lib.git lib ⤢ git sparse-checkoutExtrae solo las carpetas que nombras de un repositorio grande. git sparse-checkout set src docs ⤢ git archiveExporta el árbol de un commit como archivo tar o zip. git archive -o repo.zip HEAD