Instalación de un servidor Git

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Git es un potente sistema de control de versiones distribuido de código abierto que es crucial para gestionar eficientemente las versiones de un proyecto. Configurar tu propio servidor Git no solo mejora tu comprensión de los mecanismos internos de Git, sino que también proporciona un entorno seguro para la gestión de proyectos privados. Este laboratorio te guiará a través del proceso de configuración de un servidor Git en una máquina Linux. A pesar de la disponibilidad de plataformas como GitHub para alojar código, un servidor Git privado asegura que tus datos permanezcan seguros bajo tu control.

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo instalar y configurar Git en un sistema Linux
  • Cómo crear y gestionar un usuario específico para operaciones de Git
  • Cómo generar y configurar claves SSH para asegurar las conexiones entre tu máquina local y el servidor Git
  • Cómo inicializar y gestionar un repositorio Git localmente y en un servidor
  • Cómo realizar operaciones de control de versiones, como confirmar cambios y enviarlos a un repositorio remoto
  • Cómo verificar la configuración clonando el repositorio para asegurarte de que todo funcione correctamente

🏆 Logros

Después de completar este proyecto, podrás:

  • Comprender los fundamentos de la instalación y configuración de Git, un sistema de control de versiones distribuido, en un entorno Linux
  • Manejar permisos de usuario y seguridad en un sistema Unix/Linux para tareas específicas de aplicación
  • Utilizar técnicas de comunicación segura entre máquinas mediante el uso de claves SSH, una habilidad esencial para la gestión de servidores remotos
  • Crear y gestionar repositorios Git desnudos (bare Git repositories) que se utilizan para el almacenamiento en el lado del servidor en operaciones de Git
  • Confirmar y versionar tus proyectos utilizando comandos de Git, y enviar estos cambios a un servidor remoto
  • Verificar y solucionar problemas comunes en la gestión de repositorios remotos clonando e inspeccionando la integridad de los datos

Instalación de Git

En este paso, instalaremos Git en tu máquina, que funcionará tanto como servidor local como remoto. Este ejercicio te preparará para configurar potencialmente un servidor Git en tu computadora personal para alojamiento en red local.

## Actualiza la base de datos de paquetes de apt para asegurarnos de trabajar con la lista de software más reciente
sudo apt-get update

## Instala Git utilizando apt-get
sudo apt-get install git

Este comando actualiza tu lista de paquetes para asegurarse de que todas las instalaciones posteriores estén actualizadas y luego instala Git, el sistema de control de versiones que gestionará nuestros repositorios.

Configuración del usuario de Git

Para facilitar la gestión, crearemos un nuevo usuario específicamente para las operaciones de Git y configuraremos su directorio de trabajo.

## Crea un nuevo usuario para las operaciones de Git
sudo useradd labex-git
sudo passwd labex-git

Establece una contraseña para el usuario de Git (por ejemplo, "labex"), tendrás que ingresar la contraseña dos veces.

A continuación, crea un directorio de trabajo para el usuario de Git y asigna la propiedad:

sudo mkdir /home/labex-git
sudo chown -R labex-git:labex-git /home/labex-git

Esta serie de comandos crea un nuevo usuario, establece una contraseña y crea un directorio de trabajo dedicado para las operaciones de Git, asegurando que la gestión de repositorios esté aislada de otras actividades del sistema.

Generación de claves SSH

El uso de claves SSH simplificará nuestras operaciones de Git al eliminar la necesidad de ingresar las credenciales de usuario en cada operación. Vamos a generar un par de claves SSH y configurarlo.

## Genera un par de claves SSH
ssh-keygen -t rsa -C "[email protected]"

Presiona Enter en todas las solicitudes para utilizar la configuración predeterminada. Luego, envía la clave pública a la máquina del usuario de Git.

cat ~/.ssh/id_rsa.pub | ssh labex-git@localhost 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

Aquí debes escribir "yes" y luego ingresar la contraseña que estableciste anteriormente.

Este paso genera un par de claves SSH, lo que asegura la conexión entre tu configuración local y remota. Luego, se agrega la clave pública a la lista de autorizados en el servidor Git, lo que permite una comunicación segura sin necesidad de una contraseña en cada operación.

Creación de un repositorio remoto

Ahora, cambiaremos al usuario de Git y configuraremos un repositorio Git desnudo (bare Git repository) que es adecuado para el almacenamiento en el lado del servidor.

## Cambia al usuario de Git
su labex-git

Ingresa la contraseña que has establecido.

Ahora, puedes crear una carpeta para el repositorio e inicializar un repositorio desnudo.

mkdir -p /home/labex-git/project.git
cd /home/labex-git/project.git
git init --bare

Esta secuencia de comandos cambia el usuario actual al usuario de Git, crea un nuevo directorio para tu repositorio e inicializa un repositorio desnudo. Esta configuración es crucial para el servidor Git, ya que almacenará todos los datos enviados a él sin mantener copias de trabajo, lo que lo hace ideal para enviar y recibir datos.

Configuración del repositorio local

En este paso, configuraremos el repositorio local en tu máquina. Este proceso es similar a lo que normalmente harías en una plataforma de alojamiento de código.

Primero, cambia de nuevo al usuario normal desde el usuario de Git:

## Salir del usuario de Git
exit

Ahora, creemos un directorio para tu proyecto e inicialicemos un repositorio Git:

## Crea un directorio para tu proyecto
mkdir -p /home/labex/project/labex_project
cd /home/labex/project/labex_project

## Inicializa un repositorio Git
git init

Esto configura un nuevo repositorio Git en el directorio especificado, que servirá como tu repositorio local para el proyecto.

Configura los detalles de tu usuario de Git:

## Establece tu nombre de usuario de Git
git config --global user.name "labex"

## Establece tu correo electrónico de Git
git config --global user.email "[email protected]"

Este paso asegura que todos tus commits se registrarán con tu nombre de usuario y correo electrónico, lo que facilita el seguimiento de los cambios.

Crea un archivo para probar el proceso de commit:

## Crea un documento de prueba
echo "I am Labex Readme Doc" > readme.md

Este comando crea un archivo de texto simple llamado readme.md que contiene un mensaje de muestra, que usaremos para probar el proceso de commit y push al repositorio remoto.

Confirmar y enviar cambios

Después de haber inicializado el repositorio y configurado tu entorno de Git, es hora de confirmar y enviar tus primeros cambios.

## Agrega todos los cambios al área de preparación (staging)
git add.

## Confirma los cambios
git commit -m "Initial commit"

## Agrega el repositorio remoto
git remote add origin labex-git@localhost:/home/labex-git/project.git

Ahora, podemos enviar los cambios al repositorio remoto.

git push origin master

Verificación de la configuración

Finalmente, vamos a clonar el repositorio para asegurarnos de que tus commits se encuentran correctamente alojados en el servidor remoto.

## Navega al directorio de clonación
cd /home/labex/project

## Clona el repositorio
git clone labex-git@localhost:/home/labex-git/project.git

Puedes ver que se ha clonado un nuevo repositorio en la ruta /home/labex/project, y el archivo readme.md se encuentra dentro de él.

Resumen

En este laboratorio, has aprendido cómo configurar y ajustar un servidor Git en un sistema Linux, gestionar claves SSH y realizar operaciones típicas de Git, como inicializar repositorios, confirmar cambios y enviarlos a un servidor remoto. Este ejercicio ha demostrado el ciclo de vida completo de la configuración y el uso de un servidor Git, brindándote una base sólida para administrar tus propios repositorios de código de manera segura. Las habilidades adquiridas aquí no solo son fundamentales para el desarrollo de software, sino que también mejoran tu comprensión del control de versiones de proyectos en un entorno privado y seguro.