Skip to main content

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 (o master) 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 rama main como rama principal

Automatización con GitHub Actions (Workflows)

workflow

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