Instalando um Servidor Git

GitBeginner
Pratique Agora

Introdução

Git é um sistema de controle de versão distribuído, poderoso e de código aberto, crucial para gerenciar versões de projetos de forma eficiente. Configurar seu próprio servidor Git não apenas aprimora sua compreensão dos mecanismos internos do Git, mas também fornece um ambiente seguro para o gerenciamento de projetos privados. Este laboratório o guiará pelo processo de configuração de um servidor Git em uma máquina Linux. Apesar da disponibilidade de plataformas como GitHub para hospedagem de código, um servidor Git privado garante que seus dados permaneçam seguros sob seu controle.

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como instalar e configurar o Git em um sistema Linux
  • Como criar e gerenciar um usuário especificamente para operações Git
  • Como gerar e configurar chaves SSH para proteger conexões entre sua máquina local e o servidor Git
  • Como inicializar e gerenciar um repositório Git localmente e em um servidor
  • Como realizar operações de controle de versão, como confirmar alterações e enviá-las para um repositório remoto
  • Como verificar a configuração clonando o repositório para garantir que tudo esteja funcionando corretamente

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Compreender os fundamentos da instalação e configuração do Git, um sistema de controle de versão distribuído, em um ambiente Linux
  • Lidar com permissões de usuário e segurança em um sistema Unix/Linux para tarefas específicas de aplicativos
  • Utilizar técnicas de comunicação segura entre máquinas usando chaves SSH, uma habilidade essencial para gerenciar servidores remotos
  • Criar e gerenciar repositórios Git "bare" (nus), que são usados para armazenamento do lado do servidor em operações Git
  • Confirmar e versionar seus projetos usando comandos Git, e enviar essas alterações para um servidor remoto
  • Verificar e solucionar problemas comuns no gerenciamento de repositórios remotos clonando e inspecionando a integridade dos dados
Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 86%. Recebeu uma taxa de avaliações positivas de 96% dos estudantes.

Instalando o Git

Nesta etapa, instalaremos o Git em sua máquina, que servirá tanto como servidor local quanto remoto. Este exercício o preparará para potencialmente configurar um servidor Git em seu computador pessoal para hospedagem em rede local.

## Update the apt package database to ensure we are working with the latest software list
sudo apt-get update

## Install Git using apt-get
sudo apt-get install git

Este comando atualiza sua lista de pacotes para garantir que todas as instalações subsequentes estejam atualizadas e, em seguida, instala o Git, o sistema de controle de versão que gerenciará nossos repositórios.

✨ Verificar Solução e Praticar

Configurando o Usuário Git

Para facilitar o gerenciamento, criaremos um novo usuário especificamente para operações Git e configuraremos seu diretório de trabalho.

## Create a new user for Git operations
sudo useradd labex-git
sudo passwd labex-git

Defina uma senha para o usuário Git (como "labex"), você precisará digitar a senha duas vezes.

Em seguida, crie um diretório de trabalho para o usuário Git e atribua a propriedade

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

Esta série de comandos cria um novo usuário, define uma senha e estabelece um diretório de trabalho dedicado para operações Git, garantindo que o gerenciamento de repositórios seja isolado de outras atividades do sistema.

✨ Verificar Solução e Praticar

Gerando Chaves SSH

O uso de chaves SSH simplificará nossas operações Git, eliminando a necessidade de inserir credenciais de usuário a cada operação. Vamos gerar um par de chaves SSH e configurá-lo.

## Generate an SSH key pair
ssh-keygen -t rsa -C "labex@labex.io"

Pressione Enter em todas as solicitações para usar as configurações padrão. Em seguida, envie a chave pública para a máquina do usuário Git.

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

Aqui você deve digitar "yes" e pressionar a senha que você definiu anteriormente.

Esta etapa gera um par de chaves SSH, protegendo a conexão entre suas configurações locais e remotas. A chave pública é então adicionada à lista autorizada no servidor Git, permitindo comunicação segura sem a necessidade de uma senha para cada operação.

✨ Verificar Solução e Praticar

Criando um Repositório Remoto

Agora, vamos alternar para o usuário Git e configurar um repositório Git "bare" (vazio), que é adequado para armazenamento no lado do servidor.

## Switch to the Git user
su labex-git

Digite a senha que você definiu.

Agora, você pode criar uma pasta de repositório e inicializar um repositório "bare".

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

Esta sequência de comandos alterna o usuário atual para o usuário Git, cria um novo diretório para o seu repositório e inicializa um repositório "bare". Esta configuração é crucial para o servidor Git, pois ele armazenará todos os dados enviados a ele sem manter nenhuma cópia de trabalho, tornando-o ideal para enviar (push) e puxar (pull) dados.

✨ Verificar Solução e Praticar

Configurando o Repositório Local

Nesta etapa, configuraremos o repositório local em sua máquina. Este processo espelha o que você normalmente faria em uma plataforma de hospedagem de código.

Primeiro, retorne ao seu usuário regular a partir do usuário Git:

## Exit from Git user
exit

Agora, vamos criar um diretório para o seu projeto e inicializar um repositório Git:

## Create a directory for your project
mkdir -p /home/labex/project/labex_project
cd /home/labex/project/labex_project

## Initialize a Git repository
git init

Isso configura um novo repositório Git no diretório especificado, que servirá como seu repositório local para o projeto.

Configure os detalhes do seu usuário Git:

## Set your Git username
git config --global user.name "labex"

## Set your Git email
git config --global user.email "labex@labex.io"

Esta etapa garante que todos os seus commits serão registrados com seu nome de usuário e e-mail, facilitando o rastreamento de alterações.

Crie um arquivo para testar o processo de commit:

## Create a test document
echo "I am Labex Readme Doc" > readme.md

Este comando cria um arquivo de texto simples chamado readme.md contendo uma mensagem de exemplo, que usaremos para testar o processo de commit e push para o repositório remoto.

✨ Verificar Solução e Praticar

Commitando e Enviando Alterações

Após inicializar o repositório e configurar o Git, é hora de fazer o commit e enviar suas primeiras alterações.

## Add all changes to staging
git add .

## Commit the changes
git commit -m "Initial commit"

## Add remote repository
git remote add origin labex-git@localhost:/home/labex-git/project.git

Agora, podemos enviar as alterações para o repositório remoto.

git push origin master
✨ Verificar Solução e Praticar

Verificando a Configuração

Finalmente, vamos clonar o repositório para garantir que seus commits estão devidamente hospedados no servidor remoto.

## Navigate to the cloning directory
cd /home/labex/project

## Clone the repository
git clone labex-git@localhost:/home/labex-git/project.git

Você pode ver que um novo repositório foi clonado no caminho /home/labex/project, e o arquivo readme.md dentro dele.

✨ Verificar Solução e Praticar

Resumo

Neste laboratório, você aprendeu a configurar e gerenciar um servidor Git em um sistema Linux, gerenciar chaves SSH e realizar operações típicas do Git, como inicializar repositórios, fazer commits de alterações e enviá-las para um servidor remoto. Este exercício demonstrou o ciclo completo de configuração e uso de um servidor Git, fornecendo uma base sólida no gerenciamento seguro de seus próprios repositórios de código. As habilidades adquiridas aqui não são apenas fundamentais para o desenvolvimento de software, mas também aprimoram sua compreensão do controle de versão de projetos em um ambiente privado e seguro.