Appearance
Git
Git es un sistema de control de versiones distribuido que permite registrar y consultar los cambios realizados en los archivos de un proyecto.
Cuando trabajamos con documentación técnica, Git nos permite conservar un historial de cambios y conocer cómo ha evolucionado la documentación.
Aunque Git se utiliza principalmente en proyectos de desarrollo de software, puede gestionar versiones de cualquier conjunto de archivos, incluidos documentos Markdown.
Control de versiones
Cuando modificamos un archivo de forma manual podemos crear diferentes copias:
text
documentacion.md
documentacion-final.md
documentacion-final-2.md
documentacion-definitiva.mdEste sistema resulta difícil de mantener y no proporciona información clara sobre qué cambios se realizaron en cada versión.
Un sistema de control de versiones permite registrar la evolución de los archivos de forma organizada.
Con Git podemos:
- registrar cambios;
- mantener un historial;
- identificar quién realizó un cambio;
- consultar versiones anteriores;
- comparar modificaciones;
- recuperar estados anteriores del proyecto;
- colaborar con otros usuarios.
Cada conjunto de cambios que decidimos registrar constituye un commit.
Repositorio
Git gestiona los archivos de un proyecto mediante un repositorio.
Un repositorio contiene los archivos del proyecto y la información necesaria para mantener su historial de cambios.
Podemos convertir un directorio existente en un repositorio Git mediante:
bash
git initPor ejemplo:
bash
mkdir technical-documentation
cd technical-documentation
git initGit creará dentro del proyecto un directorio oculto:
text
.gitPodemos comprobarlo mediante:
bash
ls -laDirectorio .git
El directorio .git contiene la información utilizada por Git para gestionar el repositorio.
No debemos modificar o eliminar manualmente su contenido.
Configuración inicial
Antes de crear commits, Git necesita conocer el nombre y el correo electrónico del autor.
Podemos configurar estos datos mediante:
bash
git config --global user.name "Name Surname"
git config --global user.email "name@example.com"Podemos consultar la configuración mediante:
bash
git config --global --listLa opción --global aplica esta configuración al usuario actual y será utilizada por defecto en sus repositorios.
Estado del repositorio
Uno de los comandos que utilizaremos con mayor frecuencia es:
bash
git statusEste comando muestra el estado actual del repositorio y permite conocer qué archivos:
- todavía no están siendo seguidos por Git;
- han sido modificados;
- están preparados para incluirse en el siguiente commit.
Es recomendable utilizar git status frecuentemente para comprobar qué cambios estamos gestionando antes de registrarlos.
Estados de los archivos
Al trabajar con Git, los cambios pasan por diferentes estados.
De forma simplificada:
text
Directorio de trabajo
↓
git add
↓
Staging area
↓
git commit
↓
RepositorioDirectorio de trabajo
El directorio de trabajo contiene los archivos con los que estamos trabajando.
Por ejemplo:
text
technical-documentation/
├── images/
└── README.mdCuando creamos o modificamos un archivo, el cambio se encuentra inicialmente en el directorio de trabajo.
Staging area
La staging area permite seleccionar qué cambios queremos incluir en el próximo commit.
Podemos añadir un archivo mediante:
bash
git add README.mdTambién podemos preparar todos los cambios del directorio actual:
bash
git add .Después podemos comprobar el resultado:
bash
git statusgit add no crea un commit
git add no registra todavía una nueva versión del proyecto.
Únicamente prepara los cambios que formarán parte del siguiente commit.
Repositorio
Una vez preparados los cambios podemos registrarlos mediante un commit:
bash
git commit -m "Add initial documentation"El texto indicado mediante -m es el mensaje del commit y debe describir brevemente el cambio realizado.
Commits
Un commit representa un estado concreto del proyecto dentro de su historial.
Por ejemplo, después de crear el documento inicial:
bash
git add README.md
git commit -m "Add initial documentation"Posteriormente podemos modificar README.md, guardar los cambios y crear un nuevo commit:
bash
git add README.md
git commit -m "Add installation instructions"De esta forma el historial refleja la evolución del documento.
Mensajes de commit
Los mensajes de commit deben ser breves y describir claramente el cambio realizado.
Durante el módulo utilizaremos mensajes de commit en inglés.
Por ejemplo:
text
Add installation instructions
Update configuration guide
Fix Markdown links
Add Ubuntu screenshotsConsultar los cambios
Después de modificar un archivo podemos comprobar qué ha cambiado mediante:
bash
git diffGit mostrará las diferencias entre los archivos modificados y la última versión registrada.
Una vez que los cambios se han añadido a la staging area, podemos consultar las diferencias preparadas mediante:
bash
git diff --stagedEsto permite revisar los cambios antes de crear el commit.
Historial
Podemos consultar los commits realizados mediante:
bash
git logPara obtener una representación más compacta:
bash
git log --onelinePor ejemplo:
text
91a32bd Add installation instructions
48cf512 Add initial documentationCada commit dispone de un identificador que permite distinguirlo del resto.
Flujo básico de trabajo
Una vez creado el repositorio, el ciclo de trabajo habitual será:
- Modificar los archivos.
- Guardar los cambios.
- Comprobar el estado del repositorio.
- Revisar los cambios.
- Seleccionar los cambios que queremos registrar.
- Crear el commit.
- Comprobar el historial cuando sea necesario.
Los comandos correspondientes serían:
bash
git status
git diff
git add .
git status
git commit -m "Update documentation"
git log --onelineNo es necesario crear un commit cada vez que guardamos un archivo. Un commit debería representar un cambio coherente y reconocible dentro del proyecto.
Ejemplo completo
Podemos crear un pequeño proyecto de documentación y comenzar a gestionarlo con Git:
bash
mkdir technical-documentation
cd technical-documentation
git init
touch README.md
code .Después de redactar y guardar el contenido de README.md, comprobamos el estado:
bash
git statusPreparamos el archivo:
bash
git add README.mdVolvemos a comprobar el estado:
bash
git statusCreamos el primer commit:
bash
git commit -m "Add initial documentation"Finalmente, consultamos el historial:
bash
git log --onelineA partir de este momento podemos continuar modificando la documentación y creando commits que registren su evolución.
Git y GitHub
Git y GitHub no son lo mismo.
Git es el sistema de control de versiones que estamos utilizando localmente en nuestro equipo.
GitHub es una plataforma que permite, entre otras funcionalidades, alojar repositorios Git en Internet.
Hasta ahora nuestro repositorio existe únicamente en nuestro equipo:
text
Equipo local
└── repositorio GitEn el siguiente epígrafe aprenderemos a conectarlo con un repositorio remoto alojado en GitHub.