Una guía de referencia rápida para los comandos de Git más utilizados, organizados por categorías para facilitar su consulta.
Esta guía completa de referencia de Git es un recurso integral para cualquiera que busque mejorar su flujo de trabajo con Git. Desde principiantes que comienzan su viaje con Git hasta desarrolladores experimentados, esta guía proporciona comandos organizados y categorizados para acelerar tu proceso de desarrollo.
- Categorías organizadas: Los comandos están organizados en grupos claros y lógicos
- Ejemplos prácticos: Con casos de uso del mundo real
- Amigable para principiantes: Con explicaciones claras y consejos
- Referencia rápida: Acceso rápido a comandos esenciales
- � Acerca de esta Guía
- �🔧 Configuración Inicial
- 📁 Configuración de Repositorio
- 📊 Comandos de Estado
- 📝 Gestión de Archivos
- 💾 Commits
- 🌿 Ramas (Branches)
- 🔀 Fusión (Merge)
- 🌐 Remotos
- 📚 Historial y Logs
- 🏷️ Etiquetas (Tags)
- ↩️ Deshacer Cambios
- 📦 Stash
- 🌊 Git Flow
- ⚙️ Archivos de Configuración
- 🔍 Búsqueda
- 📁 Mover/Renombrar
- 💡 Consejos Útiles
- 🌍 Otros Idiomas
- 🤝 Contribuir
- 📄 Licencia
- 📖 Recursos Adicionales
Configurar Git con tu información personal:
# Configurar nombre de usuario
git config --global user.name "Tu Nombre"
# Configurar email
git config --global user.email "tuemail@ejemplo.com"
# Ver configuración actual
git config --list
# Configurar editor por defecto
git config --global core.editor "nano"
# Configurar herramienta de diff
git config --global merge.tool vimdiff# Crear un nuevo repositorio Git
git init
# Clonar un repositorio existente
git clone <url-del-repositorio>
# Clonar a un directorio específico
git clone <url-del-repositorio> <nombre-directorio># Mostrar estado actual del repositorio
git status
# Mostrar estado en formato corto
git status -s
# Mostrar estado ignorando archivos no rastreados
git status --ignored
# Mostrar diferencias en archivos modificados
git diff
# Mostrar diferencias en el área de preparación
git diff --staged
# Mostrar diferencias entre ramas
git diff <rama1> <rama2># Agregar archivo específico al área de preparación
git add <archivo>
# Agregar todos los archivos modificados
git add .
# Agregar todos los archivos de un tipo específico
git add *.txt
# Agregar interactivamente
git add -i
# Remover archivo del repositorio y del directorio de trabajo
git rm <archivo>
# Remover archivo solo del repositorio (mantener en directorio)
git rm --cached <archivo>
# Mover/renombrar archivo
git mv <archivo-origen> <archivo-destino># Hacer commit con mensaje
git commit -m "Mensaje del commit"
# Hacer commit agregando todos los archivos modificados
git commit -am "Mensaje del commit"
# Modificar el último commit
git commit --amend
# Hacer commit vacío (útil para triggers de CI/CD)
git commit --allow-empty -m "Trigger CI"
# Hacer commit con mensaje detallado (abre editor)
git commit# Listar todas las ramas
git branch
# Listar ramas remotas
git branch -r
# Listar todas las ramas (locales y remotas)
git branch -a
# Crear nueva rama
git branch <nombre-rama>
# Cambiar a una rama
git checkout <nombre-rama>
# Crear y cambiar a nueva rama
git checkout -b <nombre-rama>
# Crear rama desde un commit específico
git checkout -b <nombre-rama> <hash-commit>
# Eliminar rama
git branch -d <nombre-rama>
# Eliminar rama forzadamente
git branch -D <nombre-rama>
# Renombrar rama actual
git branch -m <nuevo-nombre>
# Renombrar rama específica
git branch -m <nombre-antiguo> <nombre-nuevo># Fusionar rama en la rama actual
git merge <nombre-rama>
# Fusionar sin fast-forward (crear commit de merge)
git merge --no-ff <nombre-rama>
# Fusionar solo si es fast-forward
git merge --ff-only <nombre-rama>
# Abortar fusión en curso
git merge --abort
# Continuar fusión después de resolver conflictos
git merge --continue# Listar repositorios remotos
git remote
# Listar repositorios remotos con URLs
git remote -v
# Agregar repositorio remoto
git remote add <nombre> <url>
# Cambiar URL de repositorio remoto
git remote set-url <nombre> <nueva-url>
# Eliminar repositorio remoto
git remote remove <nombre>
# Subir cambios al repositorio remoto
git push <remoto> <rama>
# Subir rama y establecer tracking
git push -u <remoto> <rama>
# Subir todas las ramas
git push --all
# Subir etiquetas
git push --tags
# Descargar cambios del repositorio remoto
git pull <remoto> <rama>
# Descargar cambios sin fusionar
git fetch <remoto>
# Descargar todas las ramas remotas
git fetch --all# Mostrar historial de commits
git log
# Mostrar historial en una línea por commit
git log --oneline
# Mostrar historial con gráfico
git log --graph
# Mostrar historial de un archivo específico
git log <archivo>
# Mostrar estadísticas de commits
git log --stat
# Mostrar cambios en cada commit
git log -p
# Mostrar últimos N commits
git log -n <número>
# Mostrar commits entre fechas
git log --since="2023-01-01" --until="2023-12-31"
# Mostrar commits por autor
git log --author="Nombre del Autor"
# Buscar en mensajes de commit
git log --grep="palabra clave"# Listar todas las etiquetas
git tag
# Crear etiqueta ligera
git tag <nombre-etiqueta>
# Crear etiqueta anotada
git tag -a <nombre-etiqueta> -m "Mensaje de la etiqueta"
# Crear etiqueta en commit específico
git tag -a <nombre-etiqueta> <hash-commit>
# Mostrar información de una etiqueta
git show <nombre-etiqueta>
# Eliminar etiqueta local
git tag -d <nombre-etiqueta>
# Eliminar etiqueta remota
git push --delete <remoto> <nombre-etiqueta>
# Subir etiqueta específica
git push <remoto> <nombre-etiqueta>
# Subir todas las etiquetas
git push <remoto> --tags# Descartar cambios en archivo específico
git checkout <archivo>
# Descartar todos los cambios no confirmados
git checkout .
# Revertir archivo a versión específica
git checkout <hash-commit> <archivo>
# Quitar archivo del área de preparación
git reset <archivo>
# Quitar todos los archivos del área de preparación
git reset
# Revertir al commit anterior (mantener cambios)
git reset --soft HEAD~1
# Revertir al commit anterior (descartar cambios)
git reset --hard HEAD~1
# Revertir a commit específico
git reset --hard <hash-commit>
# Crear commit que revierte otro commit
git revert <hash-commit>
# Revertir múltiples commits
git revert <hash-desde>..<hash-hasta># Guardar cambios actuales en stash
git stash
# Guardar con mensaje descriptivo
git stash save "Mensaje descriptivo"
# Listar todos los stashes
git stash list
# Aplicar el último stash
git stash apply
# Aplicar stash específico
git stash apply stash@{0}
# Aplicar y eliminar el último stash
git stash pop
# Eliminar stash específico
git stash drop stash@{0}
# Eliminar todos los stashes
git stash clear
# Mostrar cambios en un stash
git stash show stash@{0}
# Crear rama desde un stash
git stash branch <nombre-rama> stash@{0}Git Flow es un modelo de ramificación que define un flujo de trabajo estricto diseñado alrededor del lanzamiento del proyecto.
- master/main: Código de producción
- develop: Rama de desarrollo principal
- feature: Para nuevas características
- release: Para preparar nuevas versiones
- hotfix: Para correcciones urgentes en producción
# Inicializar git flow
git flow init
# Iniciar nueva característica
git flow feature start <nombre-caracteristica>
# Finalizar característica
git flow feature finish <nombre-caracteristica>
# Publicar característica
git flow feature publish <nombre-caracteristica>
# Iniciar release
git flow release start <version>
# Finalizar release
git flow release finish <version>
# Iniciar hotfix
git flow hotfix start <version>
# Finalizar hotfix
git flow hotfix finish <version># Crear rama de característica
git checkout develop
git checkout -b feature/nueva-caracteristica
# Trabajar en la característica
git add .
git commit -m "Agregar nueva característica"
# Fusionar característica en develop
git checkout develop
git merge --no-ff feature/nueva-caracteristica
git branch -d feature/nueva-caracteristica
# Crear rama de release
git checkout develop
git checkout -b release/1.0.0
# Finalizar release
git checkout master
git merge --no-ff release/1.0.0
git tag -a 1.0.0 -m "Versión 1.0.0"
git checkout develop
git merge --no-ff release/1.0.0
git branch -d release/1.0.0Git utiliza archivos de configuración para almacenar preferencias de usuario y repositorio:
# Sistema (todos los usuarios)
git config --system
# Usuario (usuario actual)
git config --global
# Repositorio (proyecto específico)
git config --local# Identidad del usuario
git config --global user.name "Tu Nombre"
git config --global user.email "email@ejemplo.com"
# Editor de texto
git config --global core.editor nano
# Herramienta de merge
git config --global merge.tool vimdiff
# Colores en la salida
git config --global color.ui auto
# Ver configuraciones
git config --list# Buscar en mensajes de commit
git log --grep="palabra-clave"
# Buscar cambios en el código
git log -S "fragmento de código"
# Buscar en archivos de trabajo
git grep "patrón"
# Buscar en commit específico
git grep "patrón" <hash-commit>
# Buscar ignorando mayúsculas/minúsculas
git grep -i "patrón"
# Buscar palabras completas
git grep -w "palabra"
# Mostrar números de línea
git grep -n "patrón"# Renombrar archivo
git mv archivo_viejo.txt archivo_nuevo.txt
# Mover archivo a carpeta
git mv archivo.txt carpeta/
# Renombrar carpeta
git mv carpeta_vieja carpeta_nueva
# Proceso de renombrado sin git mv
mv archivo_viejo.txt archivo_nuevo.txt
git add archivo_nuevo.txt
git rm archivo_viejo.txt
# Rastrear renombrados en el log
git log --follow archivo.txt
# Detectar movimientos
git log --stat -M# Configurar alias útiles
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk'# Crear archivo .gitignore
echo "node_modules/" >> .gitignore
echo "*.log" >> .gitignore
echo ".env" >> .gitignore
# Ignorar archivos ya rastreados
git rm --cached <archivo>
echo "<archivo>" >> .gitignore
git add .gitignore
git commit -m "Agregar archivo a .gitignore"Esta hoja de referencia está disponible en los siguientes idiomas:
- 🇺🇸 English
- 🇸🇦 العربية
- 🇧🇩 বাংলা
- 🇩🇪 Deutsch
- 🇬🇷 Ελληνικά
- 🇪🇸 Español (actual)
- 🇮🇳 हिन्दी
- 🇰🇷 한국어
- 🇵🇱 Polski
- 🇧🇷 Português
- 🇹🇷 Türkçe
- 🇨🇳 中文
¡Las contribuciones son bienvenidas! Para ayudar a mejorar este proyecto:
- Reportar problemas: Comparte errores o sugerencias de mejora
- Agregar nuevos idiomas: Crea traducciones o mejora las existentes
- Mejorar contenido: Agrega nuevos comandos, ejemplos o explicaciones
- Dar retroalimentación: Comparte tus experiencias y sugerencias
- Abrir un issue en GitHub
- Enviar un pull request
- Sugerir mejoras de documentación
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
- Documentación Oficial de Git
- Tutoriales de Git de Atlassian
- Hoja de Referencia de Git de GitHub
- Tutorial Interactivo de Git
- Libro Pro Git (gratuito)
- Flujos de Trabajo con Git
¡Feliz codificación con Git! 🚀

