GitHub y Git
Git es un sistema de control de versiones distribuido que permite registrar los cambios realizados en archivos y coordinar el trabajo entre varios desarrolladores en un proyecto. GitHub es una plataforma en línea que aloja repositorios Git y facilita la colaboración, revisión y despliegue de proyectos.
¿Qué es Git?
Git ayuda a gestionar el historial de cambios en un proyecto, facilitando el trabajo en equipo y el control de versiones. Sus conceptos principales son:
- Commit: Un commit es un "punto de control" o snapshot del proyecto en un momento dado. Contiene los cambios realizados y un mensaje descriptivo para entender qué se modificó.
- Branch (rama): Es una línea paralela de desarrollo que permite trabajar en funcionalidades o correcciones aisladas sin afectar la rama principal.
- Merge: Es la acción de unir los cambios de una rama a otra, integrando el trabajo realizado.
- Push: Envía los commits locales al repositorio remoto (por ejemplo, en GitHub).
- Pull: Trae y actualiza cambios desde el repositorio remoto a tu copia local.
- Pull Request: Solicitud para revisar y fusionar cambios de una rama a otra en GitHub, facilitando la colaboración y revisión de código.
¿Qué es GitHub?
GitHub es una plataforma web para alojar proyectos que usan Git. Permite colaborar con otras personas, gestionar versiones, revisar código y automatizar tareas mediante GitHub Actions.
Uso de GitHub en mis proyectos
Para el desarrollo de DariOS y la documentación con Docusaurus, he utilizado GitHub para gestionar ambos proyectos mediante repositorios separados. Esto me ha permitido mantener el código y la documentación organizados y versionados de forma independiente, facilitando la colaboración y el control de cambios en cada uno.
-
Repositorio para DariOS: donde está alojado el código fuente del sistema operativo.
-
Repositorio Docusaurus-DariOS: donde gestiono la documentación del proyecto utilizando Docusaurus.
Ambos repositorios están alojados en GitHub y se pueden consultar públicamente (o de forma privada según configuración).
Uso de ramas (branches)
En ambos repositorios utilizo ramas para organizar el desarrollo y facilitar la colaboración:
- La rama
main
(omaster
) contiene la versión estable y lista para producción. - Para nuevas funcionalidades, corrección de errores o experimentos, creo ramas específicas, por ejemplo
develop
o la que tu quieras - Cuando el trabajo en una rama está listo, se realiza una pull request para revisar los cambios y fusionarlos con la rama principal.
- Este flujo de trabajo permite mantener el código ordenado, seguro y facilita el trabajo en equipo.
- En mi caso me gusta trabajar en la rama
develop
y usar la ramamain
como rama principal
Automatización con GitHub Actions (Workflows)
Para optimizar y automatizar procesos como la construcción y despliegue de la documentación o el proyecto, utilizo GitHub Actions. Estas son acciones automáticas que se ejecutan ante ciertos eventos, como un push a una rama, para realizar tareas sin intervención manual.
Un caso práctico es la automatización del despliegue del sitio web en Hostinger mediante FTP cada vez que hago push a la rama principal (master
o main
).
Ejemplo de workflow para desplegar en Hostinger vía FTP
name: Deploy to Hostinger via FTP
on:
push:
branches:
- master # o 'main' si esa es tu rama principal
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '18' # O la versión de Node que uses
- name: Install dependencies
run: npm install
- name: Build the site
run: npm run build
- name: Deploy to Hostinger via FTP
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
with:
server: "<TU_SERVIDOR>"
username: "<TU_USUARIO>"
password: "<TU_CONTRASEÑA>"
local-dir: ./build/
server-dir: ./ # o la carpeta de tu sitio en Hostinger