Comparar repositórios locais e remotos

Concluído

O Git é um sistema distribuído no qual o código-fonte está localizado na máquina de cada desenvolvedor. Isso inclui o histórico completo com todas as confirmações já feitas nesse projeto. Isso é chamado de repositório local.

Isso permite que o desenvolvedor trabalhe em seu próprio ambiente isolado sem se preocupar que alguém viole seu código enquanto ainda está desenvolvendo um recurso. Ele também permite que você compare o código com versões anteriores, o código de reversão, o código de mesclagem e assim por diante. Você pode fazer isso mesmo sem uma conexão de rede.

A maior parte do trabalho que um desenvolvedor fará com o Git será feita em um repositório local. O Git oferece suporte (e facilita) às ramificações. A ramificação será discutida em um módulo separado, mas a maioria das ramificações também será criada em um repositório local.

Em uma fase posterior, você precisa compartilhar suas modificações ou novos recursos com a equipe de desenvolvimento. Portanto, o Git usa um repositório remoto. Um repositório local também pode ser vinculado a vários repositórios remotos, se necessário. O repositório remoto é usado para compartilhar facilmente código com outros membros da equipe, mas também para configurar pipelines de build. Esses pipelines criam o código enviado ao repositório remoto. Um push pode ser o gatilho para iniciar o pipeline.

Repositório local

No repositório local, é possível diferenciar três áreas ou diretórios diferentes.

  • Diretório de trabalho: esta é uma verificação única de uma versão do código. O diretório de trabalho conterá o código com o qual você está trabalhando ativamente. Você pode alterar os arquivos usando o comando checkout. Toda vez que você alterar a ramificação de trabalho ativa, os arquivos no seu diretório de trabalho serão alterados para lembrar da versão específica do código. Os arquivos que podem ser exibidos no Windows Explorer são arquivos no diretório de trabalho.

  • Área de preparo: esta área é usada como uma área entre seu diretório de trabalho e o diretório Git. Antes de poder confirmar um arquivo do diretório de trabalho para o diretório Git, primeiro será necessário testar esse arquivo. O arquivo, então, é marcado para a próxima confirmação. Você pode continuar trabalhando no arquivo. Todas as modificações no arquivo, que não forem testadas, não serão adicionadas com a próxima confirmação. Somente o conteúdo do arquivo testado será adicionado. Isso é útil quando você está trabalhando em um recurso, mas você ainda não terminou definitivamente. Você pode testar as modificações e continuar trabalhando. Se você precisar confirmar no final do dia, ainda poderá confirmar uma versão de trabalho (a versão da área de preparo) sem o risco de confirmar um arquivo desenvolvido pela metade.

  • Diretório Git: o diretório Git contém todos os metadados e o banco de dados do objeto. Cada arquivo que você confirmar para o diretório Git será armazenado dentro desse diretório. Se você habilitar Itens ocultos no Windows Explorer, verá uma pasta oculta .git. Essa pasta contém subpastas com os objetos, mas também com informações sobre o ponteiro. Se você excluir esta pasta, o seu repositório local do Git não existirá mais. Isso facilita também colocar o repositório local em uma unidade USB e levá-lo com você e utilizá-lo em outros computadores. Não faça nenhuma bobagem neste diretório ou o repositório local falhará. Também é o diretório que será usado para a sincronização com o repositório remoto.

Fluxograma de áreas do repositório local com diretório de trabalho, preparação e repositório.

Ao usar essa configuração, um arquivo no Git pode estar em um dos três estágios.

  • Não modificado e armazenado no diretório Git: o arquivo foi confirmado.

  • Modificado e na área de preparação: o arquivo está sendo testado.

  • Modificado e não está na área de preparação: o arquivo está sendo modificado.

Ciclo de vida do arquivo Git

No próximo esquema, você pode ver o ciclo de vida completo que um arquivo pode percorrer. Na primeira vez em que um novo arquivo for criado ou adicionado a uma pasta no Windows Explorer, o arquivo receberá o status não rastreado. Esse arquivo não faz parte do ciclo de vida do Git. Use o comando adicionar para adicionar esse arquivo na área de preparo, em que ele será preparado. Posteriormente, você poderá usar o comando confirmar para adicionar o arquivo ao diretório Git. Em seguida, o arquivo receberá o status inalterado. Sempre que você editar um arquivo, o arquivo receberá o status modificado ou não rastreado quando você remover o arquivo do diretório Git. Use o comando rm para remover um arquivo. A remoção de um arquivo do diretório Git não significa que o arquivo também será excluído no disco. Esta é uma ação que você deseja que o desenvolvedor faça manualmente.

Diagrama de ciclo de vida de arquivo Git com áreas não rastreadas, não modificadas, modificadas e testadas.

Repositório remoto

O repositório remoto é, então, usado pelos comandos push e pull para sincronizar com o repositório local. Portanto, mesmo quando você está compartilhando um código ou obtendo atualizações da sua equipe, isso é feito a partir de comandos que atualizam seu repositório local. Como cada repositório é independente, o proprietário do repositório é responsável por mantê-lo atualizado com as alterações de outros.

No próximo esquema, você pode ver como dois desenvolvedores podem usar o repositório remoto para compartilhar modificações. O desenvolvedor A está confirmando as alterações no repositório local e usa o comando push para carregar as modificações no repositório remoto. O desenvolvedor B pode usar o comando pull para baixar as modificações e poder enviar as modificações.

Diagrama de trabalho com repositório remoto com dois desenvolvedores.