Appearance
GitHub
GitHub es una plataforma que permite alojar repositorios Git en Internet y proporciona herramientas para compartir y colaborar en proyectos.
En el epígrafe anterior hemos utilizado Git para crear un repositorio y registrar cambios de forma local:
text
Equipo local
└── repositorio GitCon GitHub podemos mantener también una copia del repositorio en un servidor remoto:
text
Equipo local GitHub
┌─────────────────┐ ┌─────────────────┐
│ Repositorio Git │ ←─────→ │ Repositorio Git │
│ local │ │ remoto │
└─────────────────┘ └─────────────────┘Git continuará gestionando el control de versiones. GitHub proporcionará el alojamiento remoto y las herramientas de colaboración.
Cuenta de GitHub
Para utilizar GitHub necesitamos disponer de una cuenta:
La documentación oficial está disponible en:
Durante el módulo utilizaremos repositorios pertenecientes a las organizaciones de GitHub creadas para las diferentes unidades y prácticas.
Repositorios locales y remotos
Un repositorio local se encuentra almacenado en nuestro equipo.
Un repositorio remoto se encuentra alojado en otro sistema al que podemos acceder a través de una red.
Git permite relacionar ambos repositorios y transferir cambios entre ellos.
Por ejemplo:
text
Repositorio local
↓
push
↓
Repositorio remotoy en sentido contrario:
text
Repositorio remoto
↓
pull
↓
Repositorio localEsta separación permite trabajar localmente y sincronizar posteriormente el trabajo con GitHub.
Crear un repositorio en GitHub
Podemos crear un nuevo repositorio desde GitHub mediante la opción:
text
New repositoryAl crearlo debemos indicar información como:
- propietario del repositorio;
- nombre;
- descripción;
- visibilidad.
La visibilidad puede ser:
- Public, si el repositorio puede ser consultado públicamente;
- Private, si el acceso está restringido a los usuarios autorizados.
TIP
Durante las prácticas deberemos respetar siempre el nombre, propietario y visibilidad del repositorio indicados en el enunciado.
Conectar un repositorio local con GitHub
Si ya tenemos un repositorio Git en nuestro equipo, podemos conectarlo con el repositorio creado en GitHub.
Git identifica los repositorios remotos mediante nombres.
Por convenio, el repositorio remoto principal suele denominarse:
text
originPodemos añadirlo mediante:
bash
git remote add origin URL_REPOSITORYPor ejemplo:
bash
git remote add origin git@github.com:organization/technical-documentation.gitPodemos comprobar los repositorios remotos configurados mediante:
bash
git remote -vorigin
origin no es una palabra especial de Git que identifique obligatoriamente a GitHub.
Es simplemente el nombre convencional que suele utilizarse para identificar el repositorio remoto principal.
Autenticación
Para enviar cambios a GitHub debemos identificarnos ante la plataforma.
GitHub permite utilizar diferentes mecanismos de autenticación. Durante el módulo utilizaremos SSH para trabajar con los repositorios desde la terminal.
La comunicación se realizará utilizando direcciones como:
text
git@github.com:organization/repository.gitPara ello será necesario disponer de una clave SSH configurada en nuestro equipo y asociar su clave pública con nuestra cuenta de GitHub.
Podemos comprobar la conexión mediante:
bash
ssh -T git@github.comClaves privadas
Una clave SSH está formada por una parte pública y una parte privada.
La clave privada nunca debe compartirse, publicarse ni incluirse en un repositorio.
Enviar cambios
El comando git push permite enviar al repositorio remoto los commits realizados localmente.
Antes del primer envío podemos comprobar nuestra rama actual mediante:
bash
git branch --show-currentSi trabajamos con la rama main, podemos realizar el primer envío mediante:
bash
git push -u origin mainLa opción -u establece la relación entre la rama local main y la rama correspondiente del repositorio remoto.
A partir de ese momento normalmente será suficiente utilizar:
bash
git pushEl flujo será:
text
Modificar archivos
↓
git add
↓
git commit
↓
git push
↓
GitHubTIP
git push no envía simplemente los archivos que acabamos de modificar.
Los cambios deben haberse registrado previamente mediante uno o varios commits.
Descargar un repositorio
Cuando un repositorio ya existe en GitHub y queremos obtener una copia completa en nuestro equipo podemos utilizar:
bash
git clone URL_REPOSITORYPor ejemplo:
bash
git clone git@github.com:organization/technical-documentation.gitGit descargará el repositorio, creará el directorio correspondiente y configurará automáticamente el remoto origin.
Después podemos acceder al proyecto:
bash
cd technical-documentationy comprobar su configuración:
bash
git remote -vObtener cambios
Si el repositorio remoto contiene cambios que todavía no tenemos localmente, podemos obtenerlos mediante:
bash
git pullPor ejemplo, si hemos trabajado desde otro equipo o algún colaborador ha actualizado el repositorio, git pull permite incorporar esos cambios a nuestra copia local.
De forma simplificada:
text
GitHub
↓
git pull
↓
Repositorio localAntes de comenzar a trabajar sobre un repositorio compartido es recomendable comprobar que nuestra copia local está actualizada.
Flujo habitual de trabajo
Una vez conectado el repositorio local con GitHub, el flujo habitual será:
- Obtener los últimos cambios del repositorio remoto.
- Modificar los archivos.
- Comprobar los cambios realizados.
- Preparar los cambios.
- Crear un commit.
- Enviar los commits a GitHub.
Por ejemplo:
bash
git pull
git status
git diff
git add .
git commit -m "Update installation guide"
git pushDespués del push, podemos acceder al repositorio desde el navegador y comprobar que el nuevo commit aparece también en GitHub.
README.md en GitHub
Cuando un repositorio contiene un archivo README.md, GitHub muestra automáticamente su contenido en la página principal del repositorio.
Por ejemplo:
text
technical-documentation/
├── images/
├── installation.md
└── README.mdEsto convierte al README.md en un lugar adecuado para proporcionar una presentación general del proyecto y facilitar el acceso al resto de la documentación.
Historial de cambios
GitHub permite consultar desde el navegador los commits almacenados en el repositorio.
Podemos utilizar esta información para:
- consultar el historial del proyecto;
- identificar quién realizó un cambio;
- comprobar cuándo se realizó;
- consultar los archivos modificados;
- comparar diferentes cambios.
El historial que observamos en GitHub procede de los commits creados mediante Git y enviados posteriormente al repositorio remoto.
Colaboración
Una de las principales utilidades de GitHub es permitir que varias personas trabajen sobre un mismo proyecto.
GitHub incorpora herramientas como:
- repositorios compartidos;
- ramas;
- issues;
- pull requests;
- revisión de cambios;
- gestión de permisos.
En esta unidad utilizaremos principalmente GitHub para alojar y compartir nuestros repositorios de documentación.
Estas herramientas permiten desarrollar flujos de trabajo más complejos cuando varias personas participan en un mismo proyecto.
Git y GitHub
Conviene mantener clara la diferencia entre ambas herramientas:
| Git | GitHub |
|---|---|
| Sistema de control de versiones | Plataforma de alojamiento y colaboración |
| Se ejecuta en nuestro equipo | Servicio accesible a través de Internet |
| Gestiona commits e historial | Aloja repositorios Git |
| Puede utilizarse sin GitHub | Utiliza Git como base para los repositorios |
Por tanto, podemos utilizar Git sin GitHub, y también existen otras plataformas capaces de alojar repositorios Git.
Flujo completo
El flujo que hemos construido hasta este momento es:
text
Archivos
↓
Visual Studio Code
↓
Markdown
↓
Git
↓
GitHubUn ejemplo completo sería:
bash
mkdir technical-documentation
cd technical-documentation
git init
touch README.md
code .Después de crear la documentación:
bash
git status
git add README.md
git commit -m "Add initial documentation"Conectamos el repositorio con GitHub:
bash
git remote add origin git@github.com:organization/technical-documentation.git
git push -u origin mainA partir de entonces, después de realizar nuevos cambios:
bash
git pull
git status
git add .
git commit -m "Update documentation"
git pushDe esta forma disponemos de la documentación tanto en nuestro equipo como en un repositorio remoto alojado en GitHub.
En el siguiente epígrafe utilizaremos GitHub Pages para publicar esta documentación en Internet.