¿Qué es Git y GitHub? La Diferencia Clave
Git: El Motor de Control de Versiones
Es un sistema de software que rastrea cada cambio que haces en tus archivos. Te permite volver a versiones anteriores, experimentar sin miedo y gestionar los cambios en tus proyectos localmente.
GitHub: La Plataforma de Colaboración
Es un servicio web que aloja tus repositorios de Git en la nube. Proporciona una interfaz gráfica, herramientas de colaboración (como Pull Requests) y te permite compartir tu trabajo con el mundo.
Conceptos Esenciales de Git y GitHub
Entender estos términos básicos te ayudará a comprender cómo funcionan los comandos.
Repositorio (Repo)
La carpeta de tu proyecto que Git está rastreando, incluyendo el historial de cambios. Puede ser local o remoto.
Commit
Una "instantánea" de los cambios que has guardado. Cada commit debe tener un mensaje descriptivo.
Branch (Rama)
Una línea de desarrollo independiente. Permite trabajar en funciones nuevas sin afectar el código principal.
Merge (Fusionar)
La acción de combinar los cambios de una rama en otra (ej. de tu rama de función a la principal).
Pull Request (PR)
En GitHub, es una propuesta para fusionar tus cambios. Permite revisión y discusión antes de integrar el código.
Remoto vs. Local
Tu copia del repositorio en tu computadora (local) y la versión en GitHub (remoto) se sincronizan.
Comandos Esenciales de Git (Terminal)
Estos son los comandos clave que utilizarás con más frecuencia en tu día a día con Git y GitHub.
1. Configuración Inicial (`git config`)
Establece tu nombre de usuario y correo electrónico para identificar tus commits. ¡Solo necesitas hacerlo una vez!
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
2. Inicializar un Repositorio (`git init`)
Convierte una carpeta normal en un repositorio de Git, permitiendo que Git empiece a rastrear los cambios.
git init
3. Clonar un Repositorio (`git clone`)
Descarga una copia completa de un repositorio existente (por ejemplo, desde GitHub) a tu computadora.
git clone <URL_del_repositorio>
4. Ver el Estado (`git status`)
Muestra qué archivos han sido modificados, cuáles están listos para un commit, y cuáles no están siendo rastreados.
git status
5. Añadir al Área de Preparación (`git add`)
Prepara los cambios de uno o más archivos para ser incluidos en el próximo commit.
git add <nombre_del_archivo> # Para un archivo específico
git add . # Para todos los cambios en la carpeta actual
6. Guardar Cambios (`git commit`)
Crea una "instantánea" de los cambios que preparaste con `git add`, junto con un mensaje descriptivo.
git commit -m "Tu mensaje descriptivo del commit"
7. Ver Historial (`git log`)
Muestra el historial completo de commits en tu repositorio.
git log
8. Crear y Cambiar Ramas (`git branch`, `git checkout`)
Crea nuevas líneas de desarrollo y te permite moverte entre ellas.
git branch <nombre_rama> # Crea una nueva rama
git checkout <nombre_rama> # Cambia a una rama existente
git checkout -b <nueva_rama> # Crea una nueva rama Y cambia a ella
9. Fusionar Ramas (`git merge`)
Combina los cambios de una rama a otra (por ejemplo, tus nuevas funciones a la rama principal).
git merge <rama_a_fusionar>
10. Sincronizar con GitHub (`git pull`, `git push`)
`pull` trae los últimos cambios de GitHub a tu copia local; `push` envía tus commits locales a GitHub.
git pull # Descarga y fusiona cambios del remoto
git push origin <nombre_rama> # Sube tus commits a GitHub
11. Añadir un Repositorio Remoto (`git remote add`)
Conecta tu repositorio local con uno en GitHub por primera vez.
git remote add origin <URL_del_repositorio_remoto>
Ejemplo Práctico: Tu Primer Flujo de Trabajo con Git y GitHub
Sigue estos pasos en tu terminal para crear un proyecto simple, hacer cambios, trabajar con ramas y sincronizar con GitHub.
Paso 1: Crear un nuevo proyecto y inicializar Git
Crea una carpeta para tu proyecto y conviértela en un repositorio Git.
mkdir mi-primer-proyecto
cd mi-primer-proyecto
git init
# Salida esperada: Inicializado repositorio Git vacío en .../.git/
Paso 2: Crear tu primer archivo y hacer tu primer Commit
Crea un archivo, lo preparas y lo guardas en el historial de Git.
echo "# Mi Primer Proyecto Git" > README.md
git status
# Salida esperada: Archivo no rastreado: README.md
git add README.md
git status
# Salida esperada: Cambios a ser commiteados: README.md (en verde)
git commit -m "Commit inicial: Agregado README.md"
# Salida esperada: [main (root-commit) ...] Commit inicial: Agregado README.md
Paso 3: Crear una rama para una nueva función
Vamos a añadir una función de "login" en una rama separada para no afectar la rama principal (main).
git branch feature/login
git checkout feature/login
# Salida esperada: Cambiado a la rama 'feature/login'
echo "function login() { /* ... */ }" > login.js
git add login.js
git commit -m "Agregada lógica básica de login"
Paso 4: Volver a la rama principal y fusionar
Una vez que la función está lista, vuelves a `main` y traes los cambios de `feature/login`.
git checkout main
# Salida esperada: Cambiado a la rama 'main'
git merge feature/login
# Salida esperada: Actualizando ... Fast-forward / Merged ...
Paso 5: Conectar con GitHub y subir tus cambios
Crea un repositorio **vacío** en GitHub (no añadas README, licencia, etc.). Copia la URL HTTP (ej. `https://github.com/tu-usuario/mi-primer-proyecto.git`).
git remote add origin <URL_de_tu_repositorio_GitHub>
git branch -M main # Renombra la rama por defecto a 'main' si no lo está
git push -u origin main
# Salida esperada: Ramas subidas a GitHub. Puedes verlas en tu URL.
Paso 6: Traer cambios (colaboración)
Si trabajas en equipo o haces cambios directamente en GitHub, usa `git pull` para actualizar tu copia local.
git pull origin main
# Salida esperada: Ya actualizado. O descarga y fusiona cambios.
Consejos Rápidos para Principiantes
¡Practica Constantemente!
La mejor forma de aprender es usando Git y GitHub en tus propios proyectos, por pequeños que sean.
Commits Pequeños y Frecuentes
Guarda tus cambios a menudo con mensajes claros. Esto facilita volver atrás y entender el historial.
Mensajes de Commit Descriptivos
Un buen mensaje explica *qué* se hizo y *por qué*. Es tu diario de desarrollo.
ZUsa Ramas para Nuevas Funciones
Crea una rama para cada característica o corrección de error. Mantiene tu código principal limpio.
No Temas Preguntar
La comunidad de desarrollo es enorme. Si tienes dudas, busca tutoriales o pregunta en foros.
Explora GitHub
Descubre proyectos de código abierto, revisa el código de otros y aprende de ejemplos reales.