11-intro

 

Tutorial Completo de Git

Índice

  1. Introducción a Git

  2. Instalación y configuración inicial

  3. Comandos básicos

  4. Ramas (Branches)

  5. Trabajo remoto con GitHub

  6. Flujos de trabajo comunes

  7. Ejercicios prácticos


1. Introducción a Git {#introducción}

Git es un sistema de control de versiones distribuido que permite:

  • ✅ Llevar un historial de cambios en tu código

  • ✅ Trabajar en equipo sin pisar el trabajo de otros

  • ✅ Experimentar sin miedo a romper nada

  • ✅ Volver a versiones anteriores fácilmente

Conceptos clave:

  • Repositorio: Carpeta donde Git guarda todo el historial

  • Commit: Instantánea de los archivos en un momento específico

  • Rama (Branch): Línea independiente de desarrollo

  • HEAD: Puntero al commit actual


2. Instalación y configuración inicial {#instalación}

Instalación:

  • Windows: Descargar desde git-scm.com

  • Macbrew install git o descargar instalador

  • Linuxsudo apt install git (Ubuntu/Debian)

Configuración inicial (solo una vez):

bash
# Configurar tu identidad
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"

# Configurar editor por defecto
git config --global core.editor "code --wait"  # Para VS Code

# Ver configuración
git config --list

3. Comandos básicos {#comandos-básicos}

Crear un repositorio

bash
# Inicializar repositorio nuevo
mkdir mi-proyecto
cd mi-proyecto
git init

# O clonar uno existente
git clone https://github.com/usuario/repositorio.git

Ciclo básico de trabajo

bash
# 1. Ver estado de los archivos
git status

# 2. Agregar archivos al área de staging
git add archivo.txt           # Archivo específico
git add .                      # Todos los archivos

# 3. Hacer commit (guardar cambios)
git commit -m "Mensaje descriptivo"

# 4. Ver historial
git log                        # Historial completo
git log --oneline              # Historial resumido
git log --graph                # Historial con gráfico

Comparar cambios

bash
git diff                        # Cambios sin staging
git diff --staged              # Cambios en staging
git diff commit1 commit2       # Diferencia entre commits

4. Ramas (Branches) {#ramas}

Trabajo con ramas

bash
# Ver ramas
git branch                      # Lista local
git branch -r                   # Ramas remotas
git branch -a                   # Todas las ramas

# Crear y cambiar ramas
git branch nueva-funcionalidad  # Crear rama
git checkout nueva-funcionalidad # Cambiar a rama
git checkout -b otra-rama       # Crear y cambiar (combo)

# Fusionar ramas
git checkout main               # Ir a rama destino
git merge nueva-funcionalidad   # Fusionar

Resolver conflictos

Cuando Git no puede fusionar automáticamente:

  1. Git marca los archivos en conflicto

  2. Ábrelos y busca <<<<<<<=======>>>>>>>

  3. Edita para dejar la versión correcta

  4. Guarda y haz commit


5. Trabajo remoto con GitHub {#trabajo-remoto}

Conectar con repositorio remoto

bash
# Ver repositorios remotos
git remote -v

# Agregar repositorio remoto
git remote add origin https://github.com/usuario/repo.git

# Subir cambios
git push origin main            # Primera vez
git push                         # Después de configurar

# Bajar cambios
git pull                         # Traer y fusionar
git fetch                        # Solo traer, no fusionar

Flujo completo con remoto

bash
# 1. Clonar repositorio
git clone https://github.com/usuario/proyecto.git
cd proyecto

# 2. Crear rama para nueva funcionalidad
git checkout -b feature/amigos

# 3. Hacer cambios y commits
git add .
git commit -m "Agrega lista de amigos"

# 4. Subir rama al remoto
git push origin feature/amigos

# 5. En GitHub, crear Pull Request

6. Flujos de trabajo comunes {#flujos-de-trabajo}

Git Flow básico

bash
main (producción)
  ↑
develop (desarrollo)
  ↑
feature/nueva-funcion

Comandos útiles

bash
# Guardar cambios temporalmente
git stash                       # Guarda cambios sin commit
git stash list                  # Lista stashes
git stash pop                   # Recupera último stash
git stash drop                  # Elimina stash

# Deshacer cambios
git reset HEAD archivo          # Quitar del staging
git checkout -- archivo         # Descartar cambios locales
git reset --soft HEAD~1         # Deshacer último commit (mantiene cambios)
git reset --hard HEAD~1         # Deshacer último commit (pierde cambios)

7. Ejercicios prácticos {#ejercicios}

🎯 Ejercicio 1: Primeros pasos

bash
# Crea un proyecto simple
mkdir ejercicios-git
cd ejercicios-git
git init
echo "# Mi Proyecto" > README.md
git add README.md
git commit -m "Primer commit"

🎯 Ejercicio 2: Ramas

bash
# Crea una rama y haz cambios
git checkout -b desarrollo
echo "print('Hola mundo')" > app.py
git add app.py
git commit -m "Agrega script inicial"
git checkout main
git merge desarrollo

🎯 Ejercicio 3: Remoto

bash
# Crea repo en GitHub y conecta
git remote add origin https://github.com/tu-usuario/ejercicios.git
git branch -M main
git push -u origin main

📝 Buenas prácticas

Mensajes de commit:

  • Usa imperativo: "Agrega función" (no "Agregué función")

  • Primera línea: máximo 50 caracteres

  • Línea en blanco después del título

  • Detalles si es necesario

Organización:

  • Un commit por cambio lógico

  • No commites archivos generados

  • Usa .gitignore para excluir archivos

Ejemplo .gitignore:

text
# Dependencias
node_modules/
vendor/

# Archivos de sistema
.DS_Store
Thumbs.db

# Archivos de configuración local
.env
*.log

🚀 Comandos de emergencia

bash
# ¡CUIDADO! Estos comandos pueden ser destructivos

# Recuperar archivo eliminado
git checkout HEAD -- archivo.txt

# Deshacer último commit pero mantener cambios
git reset --soft HEAD~1

# Deshacer commits locales (no subidos)
git reset --hard origin/main

# Si hiciste merge sin querer
git merge --abort

Comentarios

Entradas populares de este blog

7. ¿Por qué nos interesa saber Git o un sistema de control de versiones?

Php-agregar