Git: Ferramenta Indispensável para Gerenciamento de Código

Photo by Brina Blum on Unsplash

Git: Ferramenta Indispensável para Gerenciamento de Código

Para quem já é da área de desenvolvimento ou já trabalhou com versionamento de algum projeto, certamente já ouviu falar de Git.

Se ainda não domina esta ferramenta, continue lendo esta postagem que poderá te ajudar em seus projetinhos atuais e futuros.

Antes de adentrarmos no conceito do que é Git, é importante compreender o que é Controle de Versão, pois o Git (assim como outros semelhantes) utiliza-se deste sistema para fazer o que faz de melhor.

Segundo a própria documentação que se encontra no site do Git:

O controle de versão é um sistema que registra as mudanças feitas em um arquivo ou um conjunto de arquivos ao longo do tempo de forma que você possa recuperar versões específicas.

Outros controles que podemos ter com essas premissas de um controle de versão é a possibilidade de identificar quem é responsável por qualquer modificação, assim como mapear origem de bugs e até mesmo comparar o avanço das mudanças feitas no decorrer do tempo.

Isso é demais! Imagina quanta segurança e praticidade que isso proporciona sobre nossos projetos?! Alguns pontos importantes:

  • Integridade: controle sobre qualquer alteração nos arquivos ou estrutura do projeto;

  • Autenticidade: controle sobre as propriedades e origem dos arquivos de forma a comprovar quem é responsável ou quem alterou algo;

  • Disponibilidade: dependendo de onde os arquivos estiverem armazenados, pode-se acessar os projetos de qualquer máquina pela internet ou rede local;

  • Confidencialidade: dependendo de como e onde os arquivos estiverem armazenados, pode-se ter controle de autorização de acesso aos mesmos.

Incrível o quanto essa ferramenta pode fazer, néh?!

Afinal, o que é Git?

Git é um sistema de controle de versão de arquivos de forma distribuída, permitindo até mesmo que mais de uma pessoa trabalhe no mesmo projeto.

Existem diversos sistemas de controle de versão, mas o diferencial do Git é seu foco em velocidade, colocando maior parte dos controle de forma local sem necessidade imediatada de alguma conexão com o repositório principal.

Outro ponto diferencial do Git é a forma como versiona e garante a integridade dos arquivos, pois ele utiliza-se da ideia de branchs (semelhante ao que seriam snapshots), que podem ser criadas a qualquer instante, ou seja, nos permite ter cópias do mesmo projeto e na mesma pasta.

Um exemplo simples e prático da utilização dessas vantagens do git: Estou com meu website na branch principal (master) e quero testar algo novo sem interferir no que está pronto e funcional. Crio uma nova branch, a partir dela já poderei alterar o que quiser do projeto. Assim que tudo estiver pronto e testado, pego essas alteração e faço uma união com a branch principal (esta união é chamada de merge). Caso ocorra algum problema na branch principal, posso reverter facilmente qualquer alteração feita para um estado anterior.

Lista de comandos

Git possui uma variedade de ferramentas que podem ser utilizadas por comandos via terminal. Pode conferir estes comandos logo abaixo.

Criar

Clona um repositório existente:

git clone ssh://user@domain.com/repo.git

Cria um novo repositório local:

git init

Modificações locais

Arquivos modificados no diretório ativo:

git status

Modificações em arquivos versionados:

git diff

Add all current changes to the next commit:

git add .

Adiciona as mudanças do no próximo commit:

git add -p

Commita todas as modificações de arquivos versionados:

git commit -a

Commita modificações preparadas:

git commit

Modifica o último commit:

git commit --amend

Linha do tempo

Mostra todos os commits, começando pelo mais novo:

git log

Mostra as modificações para um arquivo específico:

git log -p

Quem mudou o quê e quando em um arquivo:

git blame

Branchs e tags

Lista todas as branches existentes:

git branch -av

Muda a branch atual:

git checkout

Cria uma branch a partir do HEAD atual:

git branch

Deleta uma branch local:

git checkout --track <remote/branch>

Delete a local branch:

git branch -d

Marca o commit atual com uma tag:

git tag

Atualizar e publicar

Lista todos os remotes configurados atualmente

git remote -v

Mostra informações sobre um remote:

git remote show

Adiciona um novo repositório remoto, nomeado :

git remote add

Baixa todas as modificações do , mas não integra ao HEAD:

git fetch

Baixa as modificação e automaticamente faz o merge:

git pull

Publica as modificações locais em um remote:

git push

Deleta uma branch no remote:

git branch -dr <remote/branch>

Publica suas tags:

git push — tags

Merge e rebase

Fazer merge da no HEAD atual:

git merge

Fazer rebase do seu HEAD na :

git rebase

Abortar um rebase:

git rebase --abort

Continuar um rebase depois de resolver conflitos:

git rebase --continue

Usar a sua ferramente de merge configurada para resolver conflitos:

git mergetool

Use seu editor para resolver conflitos manualmente e marcar o arquivo como resolvido:

git add
git rm

Desfazer

Descarta todas as mudanças locais no diretório atual:

git reset --hard HEAD

Descarta mudanças locais em um arquivo específico:

git checkout HEAD

Reverte um commit (criando um novo com as modifições ao contrário):

git revert

Reseta o ponteiro do HEAD para um commit anterior

…e descarta as modificações desde então:

git reset --hard

…e preserva todas as modificações como modificações não preparadas:

git reset

…e preserva modificações locais não commitadas:

git reset --keep <commit-id>

Eu sei, é muita coisa.

Workflow básico

O fluxo de trabalho com o Git geralmente é uma sequencia bem simples:

  1. Você modifica o arquivo ou grupo de arquivos no seu diretório de trabalho;

  2. Você seleciona os arquivos, adicionando snapshots deles para sua área de preparação;

  3. Você faz um commit, que leva os arquivos como eles estão na sua área de preparação e os armazena permanentemente no seu diretório Git.

Dica

Se você quiser ou precisar praticar os principais fluxos de trabalho com o Git, recomendo esse site: http://aprenda.vidageek.net/aprenda/git.

Por ele poderá praticar de forma simplificada e objetiva os diversos comandos do Git.

Referências

Obrigado e até mais!

Se gostou do meu texto, me acompanhe que em breve estarei trazendo novidades.

Quer saber mais sobre o assunto ou tem alguma dúvida? Deixe um comentário. Ah, estou aberto a críticas também.

Abraço!