Clase 4 - Git y Github
Git es un sistema de control de versiones distribuido quepermite gestionar y rastrear cambios en el código fuente. GitHub, por otro lado, es una plataforma basada en la nube que permite alojar repositorios Git, facilitando la colaboración y el control de versiones en equipo.
Configuración inicial
Configuración local
Una vez instalado, configurar los datos del usuario es esencial para que Git pueda registrar quién realiza los cambios:
git config --global user.name "Tu Nombre"git config --global user.email "tuemail@ejemplo.com"Comprobación de la configuración
Verifica tu configuración usando:
git config --list🔐 Crear una llave SSH
Generar una nueva llave SSH
Para crear una llave SSH, utiliza el siguiente comando en la terminal:
ssh-keygen -t ed25519 -C "email@example.com"Explicación del comando
ssh-keygen: Comando para generar una nueva clave SSH.-t ed25519: Especifica el tipo de clave (Ed25519 es más seguro y recomendado).-C "email@example.com": Agrega un comentario identificador (normalmente tu correo electrónico).
Verificar si ya tienes una llave SSH
Antes de generar una nueva llave, es recomendable comprobar si ya existe una en tu sistema con el siguiente comando:
ls -al ~/.sshSi este comando muestra archivos como id_ed25519 y id_ed25519.pub, significa que ya tenemos una llave creada.
⚠️ Importante
✅ Solo necesitas una llave SSH por PC. No es necesario generar más de una.
📢 Después de generar la llave, recuerda añadirla a tu servicio (GitHub, GitLab, servidores, etc.). Podemos copiar la clave pública con:
cat ~/.ssh/id_ed25519.pub🔗 Luego, pégala en la configuración de SSH de tu servicio.
Conceptos clave
Commits
Un commit representa un conjunto de cambios confirmados en el historial del repositorio. Cada commit tiene un identificador único (hash)
Ejemplo:
git init # Inicializa un nuevo repositoriotouch archivo.txtecho "Hola Mundo" > archivo.txtgit add archivo.txtgit commit -m "Añade archivo de saludo" # Crea un commit con el cambioStage (Área de preparación)
El staging area es un espacio intermedio donde se añaden cambios antes de hacer un commit.
Ejemplo:
echo "Nuevo contenido" >> archivo.txtgit status # Muestra cambios no rastreadosgit add archivo.txt # Mueve los cambios al área de preparacióngit status # Ahora los cambios están en el área de preparaciónBranches (Ramas)
Las ramas permiten desarrollar nuevas características sin afectar la rama principal (main o master).
Ejemplo:
git branch nueva-funcionalidad # Crea una nueva ramagit switch nueva-funcionalidad # Cambia a la nueva ramaMoverse entre versiones
Es posible navegar entre commits y ramas.
Ejemplo:
git switch main # Cambia de ramagit switch -d 1234567 # Cambia a un commit específico usando su hash (primeros 7 caracteres) o --detachRevertir cambios
Si es necesario deshacer cambios, se pueden utilizar las siguientes opciones:
git revert <commit> #Deshace un commit específico generando un nuevo commit inverso.git reset #Vuelve a un estado anterior.Ejemplo:
git revert 1234567 # Revierte el commit 1234567Merges (Fusión de ramas)
Para combinar cambios de diferentes ramas:
Ejemplo:
git switch main # Nos movemos a la rama donde irán los cambiosgit merge nueva-funcionalidad # Fusiona los cambios de 'nueva-funcionalidad' en 'main'🛠️ Trabajar con GitHub
Para sincronizar un repositorio local con un repositorio remoto de GitHub, primero debes enlazar el repositorio con git remote add origin y luego hacer un push inicial.
📌 Enlazar un repositorio local con GitHub
Si ya tienes un repositorio local y quieres conectarlo con un repositorio remoto en GitHub, usa el siguiente comando:
git remote add origin https://github.com/usuario/repositorio.gitgit push -u origin main📌 Explicación:
git remote add origin URL_DEL_REPO: Conecta el repositorio local con el remoto.git push -u origin main: Sube la ramamainal remoto y establece el upstream para que en el futuro puedas hacergit pushsin especificar la rama.
📌 Clonar un repositorio de GitHub
Si necesitas obtener un repositorio en tu máquina local desde GitHub, usa:
git clone <url o uri>📌 Explicación:
- Esto descargará el repositorio y lo guardará en una carpeta con el mismo nombre del proyecto.
Si deseas clonarlo en una carpeta específica, usa:
git clone <url o uri> mi-carpeta📌 Subir cambios (Push)
Si realizaste cambios en tu repositorio local y quieres subirlos a GitHub:
git add .git commit -m "Descripción del cambio"git push origin main📌 Explicación:
git add .→ Agrega todos los archivos modificados al área de preparación.git commit -m "Descripción"→ Guarda los cambios en el historial de Git.git push origin main→ Sube los cambios a la ramamaindel repositorio remoto.
Si la rama aún no está en GitHub, usa:
git push -u origin nombre-de-la-rama📌 Descargar cambios (Pull)
Si quieres actualizar tu repositorio local con los últimos cambios de GitHub:
git pull origin main📌 Explicación:
- Descarga los cambios de la rama
maindesde el remoto (origin) y los fusiona con tu código local. - Si hay conflictos, Git te pedirá que los resuelvas manualmente.
📌 Traer ramas de un repositorio remoto
Si necesitas trabajar en una rama que existe en GitHub pero aún no está en tu local, usa:
git fetch origingit switch nombre-de-la-rama📌 Explicación:
git fetch origin→ Descarga información de las ramas sin fusionarlas.git switch nombre-de-la-rama→ Cambia a la rama deseada.- Si la rama aún no existe localmente, usa:
git switch -c nombre-de-la-rama origin/nombre-de-la-ramaEsto crea y cambia a la rama remota en tu entorno local.
⭐Tips 💫
- Commits frecuentes y descriptivos: Un commit debe representar un cambio lógico y tener un mensaje claro.
- Uso de ramas para nuevas funcionalidades: No trabajes directamente en main.
- Sincronizar con el repositorio remoto regularmente: git pull antes de git push para evitar conflictos.
- Revisar cambios antes de confirmar: Usa git status y git diff antes de un commit.
- Evitar git push —force: Puede sobrescribir cambios en el remoto.
- Usar .gitignore para evitar archivos innecesarios: Excluye archivos que no deben ser compartidos.