GIT


Sumário

Instalação

Antes de começarmos a falar sobre o GIT em si, devo deixar claro que não irei abordar a instalação dessa ferramenta aqui, isso vai depender do seu sistema operacional e como deseja instalar, entretanto vou deixar aqui um passo a passo do próprio GIT, você deve acessar este link git install.

Versionamento de código

O git é de fato uma das principais, e mais básicas, ferramentas a serem dominadas na área do desenvolvimento, isso se dá pela necessidade básica dela e sua aplicação. o GIT em específico se destaca pela sua praticidade por ser código aberto e gratuito, podendo ser aplicado em qualquer cenário, desde um pequeno projeto pessoal até mesmo em uma grande empresa desenvolvendo uma ferramenta com dezenas ou até centenas de desenvolvedores. Mas a pergunta principal é, o que é o controle de versão afinal? Podemos comparar o controle de versão como uma máquina do tempo, onde podemos voltar quando cometemos algum erro ou avançar quando precisamos, ele é um histórico de arquivos. Foi criado pelo lendário Linus Torvalds, pai do Linux, sua aplicação inicial se deu como uma solução para múltiplos desenvolvedores trabalharem no kernel do Linux sem que um código sobscrevesse o outro. Isso só pode acontecer porque o GIT trabalha com um método que utiliza branches (ramificações), podemos pensar em uma branch como uma linha do tempo, cada registro nessa linha do tempo é chamado de commit (marco). Assim, podemos criar cópias da linha do tempo principal e trabalhar nela, sem alterar o produto original.

Nessa altura do texto você deve estar pensando o que o GIT tem haver com o GitHub? eles não são a mesma coisa! O GIT como explicamos acima ele é a ferramenta responsável pelo versionamento, já o GitHub é uma das plataformas de hospedagem de arquivos e código. Ele não é a única solução no mercado, temos outras menções honrosas como GitLab, Bitbucket, SourceForge, GitKraken e até mesmo ferramentas auto-hospedadas como o Gitea e Gogs.

Conceitos básicos


Sei que pode parecer tudo confuso por enquanto, fique tranquilo(a) abstrair um conceito sem prática é realmente mais difícil, porém quando começarmos a colocar a mão no terminal, tudo vai ficar mais simples.

Comandos GIT

O GIT pode ser gerenciado de formas variadas, através do CLI (Command Line Interface), pela integração com o VSCode ou até mesmo pelo seu GUI (Graphical User Interface). Aqui iremos abordar a utilização do CLI por ser a forma mais utilizada popularmente e por questões didáticas, dessa forma você vai entender melhor o que está acontecendo.

Comando Explicação
git config --global user.name "seu nome" Esse comando serve para registrar seu nome no arquivo .config, assim seu nome vai ficar registrado em cada commit.
git config --global user.email "nome@provedor.com" Como o nome, aqui ele vai deixar salvo seu email para contato.
git clone Esse comando clona um repositório remoto para o repositório local
git init Este comando vai criar um arquivo .git iniciando o registro no repositório que ele está.
git add Este comando vai adicionar todos os arquivos do repositório para área de staging.
git add NomeDoArquivo.txt Diferente do anterior, este vai adicionar somente o arquivo especificado para staging.
git commit -m "mensagem" Esse é o comando do commit, ele salva as alterações na branch seguido de uma mensagem, essa mensagem normalmente explicita qual alteração foi feita.
git rm NomeDoArquivo.txt O rm se trata da abreviação de remove, ele irá remover o arquivo do repositório, útil quando não queremos adicionar um arquivo ao versionamento.
git status O status vai servir para mostrar a situação atual da branch, quais arquivos estão sendo rastreados e quais não estão sendo rastreados.
git log Exibe um histórico dos commits, seus hashs e mensagens.
git diff Apresenta diferença entre commits e arquivos.
git branch Ele simplesmente explicita em qual branch estamos trabalhando.
git branch new_branch Diferente do anterior, aqui criamos uma nova branch.
git checkout O checkout é utilizado para sair de uma branch para outra
git merge Este comando combina duas branches
git reset --hard HEAD~1 Desfaz o último commit e suas alterações
git remote O remote aborda o tratamento do repositório remoto, quando criamos um repositório local e queremos subir ele para um remoto, utilizamos o git remote add origin www.link.com do repositório remoto.
git fetch origin Ele traz as alterações do repositório remoto sem mesclar com nosso repositório local.
git pull Ele busca as alterações do repositório remoto e combina com o repositório local.
git push Envia as alterações do repositório local para o remoto.

Muito provavelmente você vai utilizar o GitHub como plataforma de hospedagem, porém se optar por utilizar outra plataforma você não está errado de maneira alguma. Por esse motivo vou deixar apenas um tutorial da propria GitHub de como configurar a autenticação da plataforma, lembrando que você deve criar uma conta também. No entanto aqui manteremos os exemplos somente do repositório remoto.

Configurando seu perfil no GIT

  1. Primeiro abra seu terminal, isso vai variar conforme o seu sistema operacional,
    • No Windows utilize Win + R e digite CMD
    • No mac Pressione as teclas Command (⌘) + Espaço, Digite Terminal e pressione Enter
    • Por fim no Linux utilize o Ctrl + alt + T.
  2. Digite git config --global user.name "Seu nome aqui", substitua pelo seu nome.
  3. Em seguida, digite git config --global user.email "seuemail@aqui.com", coloque seu email nesse campo.
  4. Para verificarmos se está tudo certo, você pode utilizar o comando git config --list, no final você pode verificar que o seu nome e email vai estar salvo se você fez tudo certo, por aqui terminamos. Você pode configurar outras coisas porém recomendo que mantenha-se pela configuração básica por enquanto.

Fazendo o primeiro Commit

  1. Crie um repositório Chamado "Exemplo", você pode criar uma pasta na sua área de trabalho ou onde desejar.
  2. Dentro do repositório "Exemplo" crie um arquivo "teste_git.txt".
  3. Agora iremos entrar no nosso repositório local, dependendo do sistema operacional que você está isso vai mudar, porém é necessário abrir o repositório que você está pelo terminal. Copie o caminho do arquivo e cole no seu terminal utilizando o comando cd Exemplo/.
  4. iniciaremos o repositório com o comando git init.
  5. Agora iremos verificar a situação da nossa branch, para isso utilizaremos o comando git status, ele irá nos informar que estamos na branch main e que ainda não temos nenhum commit, logo abaixo temos a mensagem:
    Untracked files:
        (use "git add ..." to include in what will be committed)
            teste_git.txt
    nothing added to commit but untracked files present (use "git add" to track)

    Aqui o próprio git está nos dizendo o que devemos fazer, é sempre importante ler o que o terminal está nos dizendo, quase sempre a solução está alí. Neste caso podemos notar que ele está nos avisando que existem arquivos que não estão sendo rastreados, e que devemos adicionar ele com o git add a área de staging, para assim realizarmos o commit e rastrear esse arquivo.
  6. Iremos executar o comando git add ., sem especificar o arquivo teste_git.txt, assim ele vai adicionar todos os arquivos dentro daquele repositório, caso você utilize o comando git add "teste_git.txt", não está errado, porém nessa situação ele adicionaria somente o arquivo especificado ao staging.
  7. Agora que adicionamos o arquivo a área de staging, podemos utilizar o git status para verificar a situação da nossa branch:
    On branch main
    
    No commits yet
    
    Changes to be committed:
      (use "git rm --cached ..." to unstage)
            new file:   teste_git.txt
                    

    Agora ele nos informa que o arquivo teste_git.txt já está na área de staging, indicando que existem mudanças a serem commitadas. Entre parênteses ele também nos informa que podemos remover o arquivo caso deseje da área de staging utilizando o comando git rm --cached "nome do arquivo", porém não iremos fazer isso agora.
  8. Com tudo pronto para realizarmos nosso primeiro commit, vamos utilizar o comando git commit -m "Initial commit", isso se trata de uma conveção para tratarmos sempre o primeiro commit com essa mensagem a fim de facilitar a identificação do desenvolvedor caso ele precise ler os logs.
  9. Agora que você fez seu primeiro commit, podemos utilizar o git status novamente, somente a fim de verificarmos como está a branch, é possível ver que não há nada para commitar, estamos na branch main e que a working tree está limpa. Não há nada mais a ser feito.
  10. Caso você deseje verificar os commits realizados e as branchs existentes, podemos utilizar o comando git log, nele é possível visualizar algumas informações. A primeira informação é o código exibido acima é o hash do commit, esse é um código único feito justamente para identificação. Abaixo temos o Autor, seguido do nome cadastrado e email cadastrado, a data e hora que foi realizado o commit e por fim a mensagem.
  11. Agora iremos fazer um experimento a fim de teste, vamos adicionar uma mensagem dentro do arquivo, pode digitar qualquer coisa, no meu caso vou colocar uma Geeks like to think that they can ignore politics, you can leave politics alone, but politics won't leave you alone frase de Richard Stallman.
  12. Em seguida vamos utilizar o comando git status para verificarmos se algo mudou, podemos verificar que o git já identificou uma alteração.
  13. A partir daqui vou deixar a sua percepção de tentar resolver a problemática a seguir. Pense, releia o passo a passo e utilize a lógica. Lembre-se do processo de Adicionar ao staging → commit.
  14. Agora vamos experimentar uma coisa diferente dentro do GIT, além da sua função de registrar e monitorar os arquivos como visualizamos anteriormente, vamos imaginar um cenário diferente. Vamos supor que outro desenvolvedor vai realizar uma nova feature adicionando outra frase de outra pessoa. Supondo que esse outro desenvolvedor já usou o comando git clone para ter esse repositório em sua maquina de forma local e já inseriu o texto novo, ele deve usar o comando git checkout -b test, em seguida teremos a mensagem que mudamos para a nova branch test.
  15. Vamos adicionar o arquivo alterado a área de staging com o git add . em seguida realizar um commit informando que inserimos a nova frase no arquivo, lembre-se que a mensagem do commit deve ser clara e concisa, vamos usar o git commit -m "Inserção de novo bloco de citação"
  16. Nos podemos visualizar a nossas brachs dessa forma, sendo cada uma das esferas na imagem um commit

  17. Agora, devemos executar os seguintes comandos para mergear as duas branchs:
    • Para fazer o checkout para a branch main (ou master): → git checkout main
    • Para mergear a branch test na branch main → git merge test

    Feito isso, chegamos ao fim de todo o ciclo da criação de uma nova feature, desde a criação do repositório até a adição dos códigos e merge para a branch principal do projeto.

Leituras recomendadas: