CONFIGURACIÓN INICIAL
CONFIGURACIÓN GLOBAL
git config --global user.name "Tu Nombre"
# Configurar nombre para commits
git config --global user.email "tu@email.com"
# Configurar email para commits
git config --global init.defaultBranch main
# Establecer rama principal como "main"
git config --global core.editor "code --wait"
# Configurar VS Code como editor por defecto
# Configurar nombre para commits
git config --global user.email "tu@email.com"
# Configurar email para commits
git config --global init.defaultBranch main
# Establecer rama principal como "main"
git config --global core.editor "code --wait"
# Configurar VS Code como editor por defecto
VER CONFIGURACIÓN
git config --list
# Ver todas las configuraciones
git config user.name
# Ver nombre configurado
git config user.email
# Ver email configurado
# Ver todas las configuraciones
git config user.name
# Ver nombre configurado
git config user.email
# Ver email configurado
Ejemplo de configuración inicial:
# Configurar Git por primera vez
git config --global user.name "Ana García"
git config --global user.email "ana@ejemplo.com"
git config --global init.defaultBranch main
# Verificar configuración
git config --list
git config --global user.name "Ana García"
git config --global user.email "ana@ejemplo.com"
git config --global init.defaultBranch main
# Verificar configuración
git config --list
REPOSITORIOS
CREAR Y CLONAR REPOSITORIOS
git init
# Inicializar nuevo repositorio LOCAL
git clone https://github.com/usuario/repo.git
# Clonar repositorio existente de GitHub
git clone https://github.com/usuario/repo.git mi-proyecto
# Clonar y renombrar carpeta local
# Inicializar nuevo repositorio LOCAL
git clone https://github.com/usuario/repo.git
# Clonar repositorio existente de GitHub
git clone https://github.com/usuario/repo.git mi-proyecto
# Clonar y renombrar carpeta local
CONECTAR CON REMOTO
git remote add origin https://github.com/usuario/repo.git
# Conectar repositorio local con GitHub
git remote -v
# Ver URLs de repositorios remotos
git remote set-url origin https://github.com/usuario/nuevo-repo.git
# Cambiar URL del repositorio remoto
# Conectar repositorio local con GitHub
git remote -v
# Ver URLs de repositorios remotos
git remote set-url origin https://github.com/usuario/nuevo-repo.git
# Cambiar URL del repositorio remoto
Ejemplo: Crear proyecto desde cero y subir a GitHub
# 1. Crear carpeta y archivos del proyecto
mkdir mi-proyecto
cd mi-proyecto
# ... crear archivos ...
# 2. Inicializar repositorio Git
git init
git add .
git commit -m "feat: proyecto inicial"
# 3. Conectar con GitHub (crear repo vacío primero en GitHub)
git remote add origin https://github.com/tu-usuario/mi-proyecto.git
git push -u origin main
mkdir mi-proyecto
cd mi-proyecto
# ... crear archivos ...
# 2. Inicializar repositorio Git
git init
git add .
git commit -m "feat: proyecto inicial"
# 3. Conectar con GitHub (crear repo vacío primero en GitHub)
git remote add origin https://github.com/tu-usuario/mi-proyecto.git
git push -u origin main
FLUJO DE TRABAJO DIARIO
COMANDOS ESENCIALES
git status
# Ver estado de archivos modificados/agregados/eliminados
git add .
# Preparar TODOS los archivos para commit
git add archivo.html
# Preparar archivo ESPECÍFICO para commit
git commit -m "mensaje descriptivo"
# Guardar cambios LOCALMENTE con descripción
git push origin main
# Subir commits al repositorio REMOTO (GitHub)
git pull origin main
# Descargar cambios del repositorio remoto
# Ver estado de archivos modificados/agregados/eliminados
git add .
# Preparar TODOS los archivos para commit
git add archivo.html
# Preparar archivo ESPECÍFICO para commit
git commit -m "mensaje descriptivo"
# Guardar cambios LOCALMENTE con descripción
git push origin main
# Subir commits al repositorio REMOTO (GitHub)
git pull origin main
# Descargar cambios del repositorio remoto
GITIGNORE
# Crear archivo .gitignore en raíz del proyecto
node_modules/
.env
*.log
.DS_Store
dist/
build/
node_modules/
.env
*.log
.DS_Store
dist/
build/
Ejemplo: Flujo de trabajo típico
# 1. Actualizar repositorio local
git pull origin main
# 2. Trabajar en los cambios...
# (modificar archivos, crear nuevos, etc.)
# 3. Revisar cambios
git status
git diff
# 4. Preparar y guardar cambios
git add .
git commit -m "feat: agregar funcionalidad de login"
# 5. Subir cambios a GitHub
git push origin main
git pull origin main
# 2. Trabajar en los cambios...
# (modificar archivos, crear nuevos, etc.)
# 3. Revisar cambios
git status
git diff
# 4. Preparar y guardar cambios
git add .
git commit -m "feat: agregar funcionalidad de login"
# 5. Subir cambios a GitHub
git push origin main
TRABAJO CON RAMAS
CREAR Y CAMBIAR DE RAMA
git branch
# Listar todas las ramas (* = rama actual)
git branch nueva-rama
# Crear nueva rama
git checkout nombre-rama
# Cambiar a otra rama
git checkout -b nueva-rama
# Crear y cambiar a nueva rama
git switch nombre-rama
# Alternativa moderna para cambiar de rama
# Listar todas las ramas (* = rama actual)
git branch nueva-rama
# Crear nueva rama
git checkout nombre-rama
# Cambiar a otra rama
git checkout -b nueva-rama
# Crear y cambiar a nueva rama
git switch nombre-rama
# Alternativa moderna para cambiar de rama
FUSIONAR RAMAS
git merge nombre-rama
# Fusionar rama actual con otra rama
git branch -d nombre-rama
# Eliminar rama local (ya fusionada)
git branch -D nombre-rama
# Forzar eliminación de rama local
git push origin --delete nombre-rama
# Eliminar rama remota
# Fusionar rama actual con otra rama
git branch -d nombre-rama
# Eliminar rama local (ya fusionada)
git branch -D nombre-rama
# Forzar eliminación de rama local
git push origin --delete nombre-rama
# Eliminar rama remota
Ejemplo: Trabajar con feature branch
# 1. Crear rama para nueva funcionalidad
git checkout -b feature/nuevo-componente
# 2. Trabajar en la funcionalidad...
# (hacer commits en la rama feature)
# 3. Cambiar a main y actualizar
git checkout main
git pull origin main
# 4. Fusionar la funcionalidad
git merge feature/nuevo-componente
# 5. Subir cambios y limpiar
git push origin main
git branch -d feature/nuevo-componente
git checkout -b feature/nuevo-componente
# 2. Trabajar en la funcionalidad...
# (hacer commits en la rama feature)
# 3. Cambiar a main y actualizar
git checkout main
git pull origin main
# 4. Fusionar la funcionalidad
git merge feature/nuevo-componente
# 5. Subir cambios y limpiar
git push origin main
git branch -d feature/nuevo-componente
INFORMACIÓN Y CONSULTAS
HISTORIAL Y COMPARACIONES
git log
# Ver historial de commits (detallado)
git log --oneline
# Ver historial de commits (resumido)
git log --graph --oneline
# Ver historial con gráfico de ramas
git show commit-hash
# Ver cambios específicos de un commit
# Ver historial de commits (detallado)
git log --oneline
# Ver historial de commits (resumido)
git log --graph --oneline
# Ver historial con gráfico de ramas
git show commit-hash
# Ver cambios específicos de un commit
VER CAMBIOS
git diff
# Ver diferencias en archivos NO guardados
git diff --staged
# Ver diferencias en archivos PREPARADOS
git diff commit1 commit2
# Comparar entre dos commits
git blame archivo.txt
# Ver quién modificó cada línea
# Ver diferencias en archivos NO guardados
git diff --staged
# Ver diferencias en archivos PREPARADOS
git diff commit1 commit2
# Comparar entre dos commits
git blame archivo.txt
# Ver quién modificó cada línea
Ejemplo: Investigar cambios recientes
# Ver historial reciente
git log --oneline -5
# (muestra últimos 5 commits)
# Ver cambios del último commit
git show
# Ver qué se va a commitear
git diff --staged
# Ver estado actual
git status
git log --oneline -5
# (muestra últimos 5 commits)
# Ver cambios del último commit
git show
# Ver qué se va a commitear
git diff --staged
# Ver estado actual
git status
DESHACER CAMBIOS
MODIFICAR COMMITS
git commit --amend
# Modificar el último commit (mensaje o archivos)
git reset --soft HEAD~1
# Deshacer último commit, mantener cambios en staging
git reset --hard HEAD~1
# Deshacer último commit y ELIMINAR cambios
git revert commit-hash
# Crear nuevo commit que deshace cambios específicos
# Modificar el último commit (mensaje o archivos)
git reset --soft HEAD~1
# Deshacer último commit, mantener cambios en staging
git reset --hard HEAD~1
# Deshacer último commit y ELIMINAR cambios
git revert commit-hash
# Crear nuevo commit que deshace cambios específicos
DESCARTAR CAMBIOS
git restore archivo.txt
# Descarta cambios en archivo (no guardados)
git restore --staged archivo.txt
# Quitar archivo del área de staging
git clean -fd
# Eliminar archivos no rastreados
git checkout -- archivo.txt
# Forma antigua de descartar cambios
# Descarta cambios en archivo (no guardados)
git restore --staged archivo.txt
# Quitar archivo del área de staging
git clean -fd
# Eliminar archivos no rastreados
git checkout -- archivo.txt
# Forma antigua de descartar cambios
Ejemplo: Corregir error en último commit
# 1. Nos damos cuenta que olvidamos un archivo
git add archivo-olvidado.js
# 2. Agregarlo al último commit
git commit --amend
# (se abre editor para modificar mensaje si es necesario)
# 3. Forzar push si ya se había subido
git push --force-with-lease origin main
# ¡CUIDADO! Solo si trabajas solo en la rama
git add archivo-olvidado.js
# 2. Agregarlo al último commit
git commit --amend
# (se abre editor para modificar mensaje si es necesario)
# 3. Forzar push si ya se había subido
git push --force-with-lease origin main
# ¡CUIDADO! Solo si trabajas solo en la rama
BUENAS PRÁCTICAS
MENSAJES DE COMMIT CONVENCIONALES
feat: agregar funcionalidad de búsqueda
# Nueva funcionalidad
fix: corregir error en cálculo de total
# Corrección de error
docs: actualizar documentación API
# Cambios en documentación
style: formatear código según guía
# Cambios de formato (sin afectar funcionalidad)
refactor: reorganizar módulo de autenticación
# Reestructurar código sin cambiar funcionalidad
test: agregar tests para componente Button
# Agregar o modificar tests
chore: actualizar dependencias
# Tareas de mantenimiento
# Nueva funcionalidad
fix: corregir error en cálculo de total
# Corrección de error
docs: actualizar documentación API
# Cambios en documentación
style: formatear código según guía
# Cambios de formato (sin afectar funcionalidad)
refactor: reorganizar módulo de autenticación
# Reestructurar código sin cambiar funcionalidad
test: agregar tests para componente Button
# Agregar o modificar tests
chore: actualizar dependencias
# Tareas de mantenimiento
CONSEJOS ESENCIALES
# 1. Hacer commits atómicos (un cambio por commit)
# 2. Escribir mensajes claros y descriptivos
# 3. Usar .gitignore para archivos temporales/sensibles
# 4. Hacer pull antes de push cuando trabajas en equipo
# 5. Usar branches para features nuevas
# 6. Revisar cambios con git diff antes de commitear
# 2. Escribir mensajes claros y descriptivos
# 3. Usar .gitignore para archivos temporales/sensibles
# 4. Hacer pull antes de push cuando trabajas en equipo
# 5. Usar branches para features nuevas
# 6. Revisar cambios con git diff antes de commitear
Ejemplo: Flujo profesional completo
# 1. Actualizar main
git checkout main
git pull origin main
# 2. Crear rama para feature
git checkout -b feat/user-profile
# 3. Trabajar en la feature
# ... hacer cambios ...
git add .
git commit -m "feat: agregar componente UserProfile"
git commit -m "style: ajustar responsive del perfil"
# 4. Fusionar con main
git checkout main
git pull origin main
git merge feat/user-profile
# 5. Subir y limpiar
git push origin main
git branch -d feat/user-profile
git checkout main
git pull origin main
# 2. Crear rama para feature
git checkout -b feat/user-profile
# 3. Trabajar en la feature
# ... hacer cambios ...
git add .
git commit -m "feat: agregar componente UserProfile"
git commit -m "style: ajustar responsive del perfil"
# 4. Fusionar con main
git checkout main
git pull origin main
git merge feat/user-profile
# 5. Subir y limpiar
git push origin main
git branch -d feat/user-profile