git init
Inicializa un repositorio en el directorio actual
Ejemplo práctico
git init # o con un nombre
git init myproject
developer reference
Referencia práctica para usar Git a diario con búsqueda, copia rápida e impresión PDF.
42 comandos visibles
git init
Inicializa un repositorio en el directorio actual
git init # o con un nombre
git init myproject
git clone <url>
Clona un repositorio remoto en local
git clone https://github.com/user/repo.git
# en un directorio concreto
git clone <url> myfolder
# solo el último commit
git clone --depth 1 <url>
git remote add origin <url>
Conecta un repositorio local con uno remoto
git remote add origin https://github.com/user/repo.git
git status
Muestra archivos modificados, preparados y sin seguimiento
git status
git status -s # salida compacta
git add <file>
Agrega archivos al area de preparacion
git add index.html
git add . # todos los cambios
git add -p # interactivo, bloque por bloque
git commit -m "<msg>"
Confirma los cambios preparados con un mensaje
git commit -m "feat: add login page"
git commit -am "fix: typo" # preparar y confirmar archivos seguidos
git commit --amend
Edita el ultimo commit, su mensaje o su contenido
Sustituye el último commit. Coordina el cambio si ya está publicado.
git commit --amend -m "new message"
# añadir archivos olvidados
git add file.txt && git commit --amend --no-edit
git rm --cached <file>
Elimina el archivo del índice de Git; conserva el archivo local. Confirma para dejar de seguirlo.
El próximo commit elimina este archivo del repositorio; conserva la copia local.
git rm --cached secret.env
git stash
Guarda cambios no confirmados en stash
git stash
git stash push -m "wip: login form"
git stash list
Lista todos los stashes
git stash list
git stash pop
Aplica un stash y lo elimina solo si la aplicación tiene éxito
Comprueba los conflictos. Git conserva el stash si la aplicación falla.
git stash pop
git stash pop stash@{2}
git stash apply [stash@{n}]
Aplica un stash sin eliminarlo
git stash apply stash@{1}
git stash drop [stash@{n}]
Elimina un stash concreto
Elimina el stash seleccionado. No se garantiza su recuperación.
git stash drop stash@{0}
git stash branch <branch>
Crea una rama desde un stash y lo aplica
git stash branch feature/login stash@{0}
git branch
Lista ramas locales; -a incluye remotas
git branch
git branch -a
git switch -c <name>
Crea una rama nueva y cambia a ella
git switch -c feature/auth
# sintaxis anterior
git checkout -b feature/auth
git switch <branch>
Cambia a una rama existente
git switch main
git switch - # rama anterior
git merge <branch>
Fusiona una rama en la rama actual
git switch main
git merge feature/auth
git merge --no-ff feature/auth # conservar commits de fusión
git rebase <branch>
Reubica el historial de la rama sobre una nueva base
Reescribe el historial. Coordina el rebase de una rama compartida.
git switch feature/auth
git rebase main
git rebase -i HEAD~3 # interactivo: combinar o reordenar
git cherry-pick <hash>
Aplica un commit concreto a la rama actual
git cherry-pick a3f1c2e
git cherry-pick a3f1c2e^..b7d9e0f # intervalo de commits
git branch -d <branch>
Elimina una rama solo si ya esta fusionada
git branch -d feature/auth
git branch -D feature/auth # eliminación forzada
git remote -v
git fetch [remote]
Descarga actualizaciones sin fusionarlas
git fetch origin
git fetch --all
git pull
git pull --rebase # con rebase
git push <remote> <branch>
Envia commits al remoto
git push origin main
git push -u origin feature/auth # establecer seguimiento remoto
git push --force-with-lease
Force push mas seguro; falla si el remoto tiene commits nuevos
Reescribe el historial remoto. Verifica la rama y el estado remoto esperado.
git push --force-with-lease
git log --oneline --graph
Historial compacto con grafico de ramas
git log --oneline --graph --decorate
git log -5 --oneline # últimos 5 commits
git log -S "<string>"
Encuentra commits que agregan o eliminan una cadena
git log -S "apiKey" --oneline
git blame <file>
Muestra quien modifico por ultima vez cada linea
git blame src/main.py
git blame -L 10,20 src/main.py
git reflog
# recuperar un commit perdido
git checkout HEAD@{2}
git restore <file>
Descarta cambios locales no preparados
Descarta cambios sin preparar del archivo. Git podría no recuperarlos.
git restore index.html
git restore . # todos los archivos
git restore --staged <file>
Quita del area de preparacion manteniendo los cambios
git restore --staged secret.env
git reset HEAD~1
Deshace el ultimo commit manteniendo los cambios
El reset mixed conserva archivos pero limpia la preparación. --hard descarta también cambios seguidos.
git reset --soft HEAD~1 # mantener cambios preparados
git reset HEAD~1 # quitar de preparación, conservar archivos
git reset --hard HEAD~1 # DESTRUYE los cambios locales
git revert <hash>
Crea un commit que revierte otro commit, seguro para remotos
git revert a3f1c2e --no-edit
git clean -fd
Elimina archivos y directorios sin seguimiento; irreversible
Elimina definitivamente archivos y directorios sin seguimiento. Revisa antes con git clean -nd.
git clean -fdn # vista previa
git clean -fd
git diff
Cambios no preparados
git diff
git diff src/main.py
git diff --staged
Cambios preparados listos para commit
git diff --staged
git diff <branch1> <branch2>
Compara dos ramas
git diff main feature/auth
git diff --name-only main feature/auth
git config --global user.name "<name>"
Define el nombre de usuario global
git config --global user.name "Enzo"
git config --global user.email "<email>"
Define el email de usuario global
git config --global user.email "enzo@example.com"
git config --global alias.<name> "<cmd>"
Crea un alias para un comando
# git lg = historial gráfico
git config --global alias.lg "log --oneline --graph --decorate"
git config --list
Muestra toda la configuracion activa
git config --list --show-origin
Usa git restore --staged <file>. Para dejar de seguirlo conservando la copia local, usa git rm --cached <file> y confirma su eliminación del índice.
Usa Imprimir PDF. La versión imprimible incluye todos los comandos y ejemplos, incluso en secciones ocultas por la búsqueda.
Sí. Sirve los archivos estáticos con un servidor HTTP local. Búsqueda, filtros y copia funcionan en el navegador; la prueba Regex necesita HTTP con workers permitidos.