Guía Práctica de Git: Domina los Comandos Esenciales
Esta guía te llevará paso a paso a través de los comandos más importantes de Git, desde la creación de un repositorio local hasta la sincronización con GitHub. Es ideal para desarrolladores que desean fortalecer su flujo de trabajo con Git y asegurar una colaboración eficiente en proyectos de software.
Este tutorial esta dividido en:
- Inicializar un repositorio local (
git init)
- Agregar archivos y realizar commits (
git add, git commit)
- Gestionar ramas (
git branch)
- Fusionar ramas (
git merge)
- Conectar con un repositorio remoto (
git remote)
- Subir cambios al repositorio remoto (
git push)
- Verificar el historial de ramas (
git log --all)
- Actualizar el repositorio local desde el remoto (
git pull)
- Resolver conflictos durante la fusión de ramas
Asegurate tener la configuración básica de git y estar autenticado con tu clave SSH:
Inicializar un proyecto
Para realizar los siguientes ejercicios, es necesario tener un archivo o archivos en tu carpeta de trabajo. Si no tienes un proyecto existente, crea un archivo de ejemplo.
Crea 3 archivos en una carpeta donde comenzarás a generar tu proyecto web.
touch index.html script.js style.css
Paso 1: Inicializar el repositorio.
git init <nombre_del_directorio>: Este comando inicializa un nuevo repositorio de Git en el directorio especificado o en el directorio actual si no se especifica uno.
<nombre_del_directorio>: El nombre del directorio donde se creará el nuevo repositorio. Si omites este argumento, Git inicializará un repositorio en el directorio actual.
Este comando crea una carpeta oculta .git que contiene toda la información necesaria para el control de versiones.
git init
git branch -M <nombre_nueva_rama>: Este comando renombra una rama existente, generalmente utilizada para cambiar el nombre de la rama por defecto.
<nombre_nueva_rama>: El nombre que quieres asignar a la rama. En este caso, se renombra a "main", que es una convención común actualmente.
El uso de -M fuerza el cambio de nombre, sobrescribiendo cualquier rama existente con el mismo nombre.
git branch -M main
git status: Este comando muestra el estado actual del repositorio de Git, incluyendo:
- Archivos modificados que aún no se han añadido al área de preparación (staging).
- Archivos que están listos para ser confirmados (committed).
- Archivos no rastreados (untracked) que aún no están bajo control de versiones.
Es útil para revisar qué cambios se han hecho y qué acciones son necesarias antes de un commit.
git status
Paso 2: Agregar archivos y realizar commits
git add <ruta_archivo>: Este comando añade cambios al área de preparación (staging area) para ser incluidos en el próximo commit.
<ruta_archivo>: La ruta del archivo o directorio que deseas agregar. Puede ser un archivo específico, varios archivos o usar . para agregar todos los cambios en el directorio actual.
Este comando no realiza un commit, solo prepara los archivos para ser confirmados.
git add .
git status
git commit -m "<mensaje_commit>" : Este comando guarda los cambios preparados en el historial del repositorio junto con un mensaje descriptivo.
<mensaje_commit>: Es un texto que describe brevemente los cambios realizados en el commit. Debe ser claro y conciso para facilitar el seguimiento del historial de cambios.
El -m permite agregar el mensaje directamente desde la línea de comandos sin abrir el editor de texto.
git commit -m "feat: add empty html, css, and js files"
No existe una convención formal para el mensaje del commit, sin embargo, la convención de Angular para los commits es ampliamente utilizada porque ofrece beneficios claros en la gestión y mantenimiento de proyectos, y su adopción va más allá de Angular, aplicándose en diversos proyectos open-source y privados:
<acción>(<área>): <mensaje breve>
- acción: Describe la naturaleza del commit (feat, fix, etc.).
- área: Opcional, describe la parte del proyecto que se está modificando.
- mensaje breve: Describe en pocas palabras qué se está haciendo.
Acciones comunes de commits:
- feat: Nueva funcionalidad o característica.
- fix: Corrección de errores.
- chore: Tareas que no afectan el código en sí (por ejemplo, actualizaciones de dependencias).
- docs: Cambios relacionados con la documentación.
- refactor: Modificaciones del código que no corrigen errores ni agregan nuevas funcionalidades.
- style: Cambios que no afectan la lógica del código (formato, espacios, etc.).
- test: Adición o actualización de pruebas.
GitHub recomienda que los commits sean lo más descriptivos posible, evitando mensajes genéricos como "actualización del código" o "arreglo del código". Esto facilita el rastreo de cambios en el proyecto.
GitHub fomenta la práctica de commits atómicos, es decir, que cada commit debe hacer una sola cosa (por ejemplo, agregar una función, corregir un error, etc.), lo que facilita la revisión y revertir cambios si es necesario.
Ejemplos de algunos commmits:
feat(auth): add JWT authentication for secure login
feat(auth): agregar autenticación JWT para inicio de sesión seguro
refactor(userService): simplify user validation logic
refactor(userService): simplificar la lógica de validación de usuarios
style(button): add spaces between buttons
style(button): agregar espacios entre botones
git log: Este comando muestra información detallada sobre la historia de confirmaciones(commit), incluyendo quién realizó cada confirmación, cuándo se hizo y un resumen de los cambios realizados.
git log
También puedes optar por usar con las sig. opciones:
git log --oneline: Muestra cada confirmación en una sola línea con su identificador abreviado y el mensaje del commit.
git log --graph: Muestra un gráfico ASCII que representa las relaciones entre las ramas y las confirmaciones.
Paso 3: Gestionar ramas
git branch <nombre_rama>: Este comando crea una nueva rama basada en la rama actual.
git checkout <nombre_rama>: Este comando cambia a la rama especificada y actualiza los archivos en el directorio de trabajo a la última versión confirmada en esa rama.
Abre el editor de tu preferencia y escribe la estructura html básica.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
Paso 4: Fusionar ramas.
Una vez que hayas terminado de desarrollar la funcionalidad en la nueva rama, puedes fusionar los cambios con otra rama, en este caso, la rama main. Para realizar la fusión, primero debes cambiar a la rama que recibirá los cambios:
git checkout main
git merge <nombre_rama>: Este comando combina los cambios de la rama especificada(basic-html) en la rama actual(main).
<nombre_rama>: La rama que quieres fusionar en la rama en la que estás trabajando actualmente. Git integrará los cambios de <nombre_rama> en tu rama actual.
Este comando puede generar conflictos si los cambios en ambas ramas afectan las mismas líneas de código; en tal caso, deberás resolver los conflictos manualmente antes de completar el merge.
git merge basic-html
git status
Paso 5: Verificar la conexión remota
Crea un respositorio nuevo en GitHub.
Se recomienda tener configurada la llave pública para realizar la conexión con la dirección SSH. Si no tienes la configuración revisa la sección Uso de SSH con Git-GitHub
- Copia la direcció SSH del nuevo repositorio.
git remote add <nombre_remoto> <URL_del_repositorio>: Este comando