Git es un sistema de control de versiones distribuido diseñado para:
Sistemas centralizados (SVN, CVS):
Git (distribuido):
# Configuración global
git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@ejemplo.com"
# Configuración del repositorio actual
git config user.name "Tu Nombre"
git config user.email "tu.email@ejemplo.com"
# Crear un nuevo repositorio
git init
# Clonar un repositorio existente
git clone https://github.com/usuario/repositorio.git
# Ver estado de archivos
git status
# Añadir archivos al staging area
git add archivo.txt # Archivo específico
git add . # Todos los archivos
# Confirmar cambios
git commit -m "Mensaje descriptivo del cambio"
git commit -a -m "Añadir y confirmar en un paso"
# Ver historial de commits
git log
git log --oneline # Formato resumido
git log --graph # Con representación gráfica
# Ver ramas existentes
git branch
# Crear nueva rama
git branch nueva-funcionalidad
# Cambiar a una rama
git checkout nueva-funcionalidad
git switch nueva-funcionalidad # Git moderno
# Crear y cambiar en un paso
git checkout -b nueva-funcionalidad
# Fusionar ramas
git checkout main
git merge nueva-funcionalidad
# Eliminar rama
git branch -d nueva-funcionalidad
git add
git commit
# Ver repositorios remotos
git remote -v
# Añadir repositorio remoto
git remote add origin https://github.com/usuario/repo.git
# Eliminar repositorio remoto
git remote remove origin
# Obtener cambios sin integrarlos
git fetch origin
# Obtener e integrar cambios
git pull origin main
# Enviar cambios locales al remoto
git push origin main
# Establecer upstream para simplificar comandos
git push -u origin main
# Guardar cambios temporalmente
git stash
git stash pop
# Reescribir historia
git rebase main
git rebase -i HEAD~3
# Etiquetas para versiones
git tag v1.0.0
git tag -a v1.0.0 -m "Versión 1.0.0"
# Cherry-pick para aplicar commits específicos
git cherry-pick abc123
# Revertir commits
git revert abc123
Archivo para especificar qué archivos no deben versionarse:
# Ejemplos de .gitignore
node_modules/
*.log
.env
.DS_Store
Workspace | Staging/Index | Local Repo | Remote Repo |
---|---|---|---|
git add | git commit | git push | git fetch |
git rm | git commit -a | git pull | git clone |
git mv | git reset | git merge | git remote |
git checkout | git reset --hard | git checkout | git pull |
git stash | git rm --cached | git rebase | git push --force |
# Configurar Git
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
# Crear directorio del proyecto
mkdir proyecto-demo
cd proyecto-demo
# Inicializar repositorio
git init
# Crear archivo README
echo "# Proyecto Demo" > README.md
# Verificar estado
git status
# Añadir al staging
git add README.md
# Crear primer commit
git commit -m "feat: primer commit del proyecto"
# Crear rama para nueva funcionalidad
git checkout -b feature/nueva-funcionalidad
# Crear archivo para la funcionalidad
echo "function nuevaFuncionalidad() {}" > funcionalidad.js
# Añadir y commitear
git add funcionalidad.js
git commit -m "feat: implementa nueva funcionalidad"
# Volver a la rama principal
git checkout main
# Fusionar cambios
git merge feature/nueva-funcionalidad
# Añadir repositorio remoto
git remote add origin https://github.com/usuario/proyecto-demo.git
# Enviar cambios al remoto
git push -u origin main
# Simular trabajo de otro desarrollador
# (En un directorio diferente)
git clone https://github.com/usuario/proyecto-demo.git
cd proyecto-demo
echo "# Nueva sección" >> README.md
git add README.md
git commit -m "docs: actualiza README"
git push origin main
# Volver al repositorio original
cd ../proyecto-demo
git pull origin main
# Crear conflicto intencionalmente
echo "# MI versión del README" > README.md
git add README.md
git commit -m "docs: actualiza README con mi versión"
# Intentar pull (generará conflicto)
git pull origin main
# Resolver conflicto manualmente
# (Editar archivo README.md)
git add README.md
git commit -m "fix: resuelve conflicto en README"
git push origin main
En nuvu hemos establecido lineamientos oficiales para:
Consulta el documento completo en nuestro repositorio:
¿Preguntas?