Quer entender mais sobre Git e como utilizá-lo na prática? Confira o guia básico sobre Git que preparamos para você.

Git é um sistema de controle de versão distribuído com ênfase em velocidade. O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux, mas foi adotado por muitos outros projetos.​

Cada diretório de trabalho do Git é um repositório com um histórico completo e habilidade total de acompanhamento das revisões, não dependente de acesso a uma rede ou a um servidor central.​

Abaixo ilustro o modelo de trabalho proposto para uso do Git:

Modelos de trabalho baseado na ferramenta Microsoft Azure DevOps

Usando Git na prática

Git é uma ferramenta extremamente simples e fácil de se usar, nossa primeira ação para utilizarmos o Git é fazer a instalação em seu computador, para isso basta acessar um dos links de download abaixo e seguir os procedimentos recomendados para cada um dos sistemas operacionais:

Com o Git instalado/configurado em nosso ambiente agora podemos iniciar nosso versionamento. Todo trabalho será mostrado via comando… vamos ao Bash, CMD, Powershell, etc 

Versionando seu código fonte (arquivos)

Criando um novo repositório git

  • git init

Para versionarmos arquivos pelo Git a primeira coisa que precisamos fazer é criar um novo repositório, crie um diretório em sua máquina e dentro do mesmo execute o comando:

Pronto repositório Git criado. Agora você pode verificar que para controle de todo versionamento o git cria um diretório oculto .git

Funcionamento do Git

O trabalho de versionamento do Git dentro de um repositório é simples, basicamente todo repositório Git trabalha com uma estrutura de árvores em três níveis:

  1. Work Directory: contém os arquivos vigentes;
  2. Stage ou index: funciona como uma área temporária;
  3. Head: aponta para o último commit feito;

Trabalhando com repositórios remotos

Existem diversas ferramentas de mercado que nos oferecem um repositório Git remoto, ferramentas como Azure DevOps, Git Hub ou Git Lab. Caso tenha algum repositório remoto em ferramentas como estas, você pode criar uma cópia local executando o comando:

  • git clone <caminhodorepositorio>

ou fornecendo já no comando os dados de acesso:

  • git clone usuario@servidor:<caminhadorepositório>

Adicionando arquivos e confirmando as alterações

Durante o versionamento dos arquivos o primeiro passo é adicionar novos arquivos ao nosso Index (stage) utilizando para isso o comando:

  • git add <arquivos>

Reparem que criei um arquivo chamado Codigo.cs e para adicionar em nosso versionamento utilizei o comando git add *, onde o caractere * representa todos os arquivos novos deste diretório. Com isso executamos o primeiro passo básico de um fluxo de trabalho com Git. Agora para efetivarmos esta mudança, precisamos confirmar as mesmas incluindo ela enviando o arquivo para o HEAD do repositório local através do comando:

  • git commit -m “comentário referente as mundancas”

Esta sequência de comandos pode ser executada diversas vezes, com isso teremos nossos arquivos sempre versionados localmente, isso mesmo, localmente, restando ao final de um período ou etapa enviar as alterações aplicadas no HEAD para o servidor remoto.

Enviando alterações para o servidor remoto

Para enviarmos estas alterações para um servidor remoto utilizamos o comando:

  • git push origin <nomedabranch>

Um ponto a se observar é que o comando git push só deve ser utilizado se anteriormente tivéssemos clonado o repositório remoto através do comando git clone. Caso isso não tenha sido feito devemos adicionar as alterações através do comando:

  • git remote add origin <enderecodoservidor>

Trabalhando com Branches

Utilizamos branches (“ramos”) para trabalharmos em funcionalidades de forma isolada. Sempre temos uma branch principal, a qual o Git coloca o nome de master, ela é criada automaticamente quando criamos o repositório. Depois disso podemos criar diversas branches isolando nosso trabalho para que no final possamos mesclar (merge) a sua branch principal.

Para criarmos um nova branch em nosso repositório local execute o comando:

  • git checkout -b <nomedabranch>

No mesmo momento que criamos uma nova branch com o comando git checkout, automaticamente passamos a trabalhar nesta nova branch. Caso queira retornar a uma outra branch criada basta executar o comando:

  • git checkout <nomedabranch>

Para excluirmos uma branch criada, execute o comando:

  • git branch -d <nomedabranch>

Lembrando que todas estas alterações estão sendo feitas em seu repositório local, ou seja, a brach criada não está disponível para os outros membros do time, para que isso aconteça é necessário enviarmos a branch para o repositório remoto através do comando:

  • git push origin <nomedabranch>

Atualizando e mesclando branches

Para atualizar seu repositório local com possíveis mudanças feitas por outros membros da equipe na brach remota executamos o comando:

  • git pull origin <nomebranchremota>

Com a branch local atualizado podemos mesclar alterações entre as branches, claro isso se elas possuírem diferenças. Para listarmos estas diferenças executamos o comando:

  • git diff <branchdeorigem> <branchdedestino>

Considerando que existam diferenças (listadas acima) e claro caso você queira mesclar as duas, vamos acessar a branch de destino através do comando git checkout e na sequência executamos o comando:

  • git merge <nomebranchorigem>

Vale lembrar que as alterações são feitas localmente, ou seja, para que o repositório remoto seja atualizado precisamos executar o comando git push. Outro ponto importante é que caso o processo de merge gere um conflito, a ferramenta solicitará que você resolva manualmente estes conflitos, e após este procedimento você precisará incluir as mudanças geradas pelo conflito através do comando git add.

Criando rótulos durante o versionamento

Durante o processo de produção de um software é importante organizarmos nossa alterações, principalmente em momentos de releases, para isso podemos incluir em nosso repositório Tags, uma espécie de rótulos que facilita na identificação das releases. Para criarmos uma tag execute o comando:

  • git tag <nomedatag> <numerodocommit10digitos>

Importante dizer que o número do commit que receberá a tag é representado pelos primeiros dígitos do commit (não precisa ser o ID inteiro, você pode incluir somente o inicio, desde que ele seja único) e caso você precise consultar este ID podemos usar o comando:

  • git log

Revertendo alterações em seu repositório local

Como errar é humano, é importante saber que, caso seja necessário podemos reverter algum arquivo que alteramos localmente pela última versão no servidor remoto, para isso execute o comando:

  • git checkout — <nomedoarquivo>

Caso o problema tenha sido um pouco maior e você queira remover todas as alterações confirmadas em seu repositório local na branch principal (master) execute os comandos:

  • git fetch origin
  • git reset –hard origin/master