Artigos

Fundamentos do Git

Git é um sistema de controle de versão distribuído (DVCS), uma ferramenta para desenvolver e manter software. Ele permite desenvolver em etapas incrementais e oferece uma visão do histórico do projeto. Como desenvolvedor, isso é útil porque, depois de aprender os fundamentos, você acompanhará seu trabalho com mais facilidade.

Pré-requisitos

  • Git instalado localmente
  • Conta no Github / Gitlab

Sem entrar em muitos detalhes, o modelo do Git tem dois níveis: área de preparação (Staging) e histórico (History). A área de preparação contém o trabalho atual. O histórico registra todas as mudanças feitas no projeto. O Git funciona de modo que, a qualquer momento, existe uma cópia remota do projeto, hospedada no Github / Gitlab, e várias cópias, geralmente nos computadores dos desenvolvedores. Enquanto eles trabalham em funcionalidades, as mudanças são feitas primeiro localmente e depois sincronizadas com o repositório remoto. Isso permite uma colaboração eficaz e oferece proteção caso algo aconteça com um computador que continha trabalho.

Fundamentos e exemplo

  • Para começar, crie um repositório no Gitlab e clone-o no seu computador.
  • Estes são os comandos que veremos para o fluxo básico:
    • git status
    • git add
    • git commit
    • git push

Vamos usar uma função simples de Python como exemplo. Crie um arquivo calculator.py e adicione:

def add(x, y):
    return x + y

print add(5, 3)

Execute git status e verá o seguinte:

git status
git status

Ele indica que o arquivo não está sendo rastreado. Vamos adicioná-lo à área de preparação com git add calculator.py

Execute git status novamente e agora o arquivo estará sendo rastreado:

git status (arquivo novo)
git status (arquivo novo)

Quando o arquivo está na área de preparação, podemos registrar a mudança no histórico com git commit -m “Adding addition function to script”

Executar git status novamente mostra que o repositório não tem nada na área de preparação, mas difere do remoto por estar um commit à frente:

git status
git status

Podemos ver a mudança no histórico executando git log e observando a lista de commits realizados. Para sincronizar nossas mudanças com o repositório remoto, precisamos enviá-las com git push. Acesse a página do repositório no Gitlab e confira se o commit está presente.

Lista de commits
Lista de commits

Branches

Uma observação sobre as branches do Git: elas são referências ao hash de um commit. Isso permite percorrer o projeto e ver as mudanças naquele ponto específico do tempo. Para mudar de branch, execute git checkout <branch_name>.

Fluxo de desenvolvimento com branches

Nesta seção, veremos como uma equipe registra mudanças em um projeto por meio do fluxo de desenvolvimento com branches. Quando um desenvolvedor começa a trabalhar em uma funcionalidade, o procedimento é: * Obter localmente o trabalho mais recente da branch master * Criar uma branch, trabalhar na funcionalidade e registrar as mudanças * Enviar as mudanças ao repositório remoto para outro desenvolvedor revisar * Depois de revisar e testar o código, integrá-lo à branch master

Outras dicas

Aliases

Aliases são atalhos de palavras que você pode definir. Digitar comandos git pode ser repetitivo, e usar aliases economiza tempo. Aqui estão alguns exemplos:

# in your .bash_aliases
alias g="git status"
alias gd="git diff"
alias gaa="git add -A"
alias gcm="git commit -m"
alias gco="git checkout"
alias gpoh="git push origin HEAD"

Visualização da árvore do Git

Ver a árvore atual do Git ajuda a visualizar o desenvolvimento do projeto. Para isso, execute:

"git log --graph --oneline --decorate --all", e coloque em um alias, por exemplo gg (git graph)

Redefinindo mudanças

Às vezes, queremos reverter mudanças. Dois comandos úteis são: * git reset, para remover mudanças da área de preparação * git reset --hard, para apagar todas as suas mudanças

Guardando mudanças temporariamente

Guardar mudanças temporariamente é útil quando você precisa ir a outra área do projeto e tem modificações ainda não registradas. Por exemplo, você desenvolve uma funcionalidade na branch feature_x e, de repente, surge um bug crítico que precisa corrigir. É necessário passar para a branch master para resolvê-lo. Antes de mudar para master, você precisa guardar suas mudanças; é aí que entra o comando stash.

  • git stash, guarda as mudanças temporariamente
  • git stash pop, restaura as mudanças
  • git stash list, mostra todas as mudanças guardadas temporariamente

Git Blame

Outra funcionalidade útil de git é blame. git blame permite ver o último commit que modificou cada linha de um arquivo. Isso ajuda a entender melhor por que o desenvolvedor escreveu aquela linha de código.

git blame <file_name>

Considerações finais

Abordamos os fundamentos de git, suficientes para um iniciante começar e usar nos próximos projetos. Aprender Git levará algum tempo, mas, quando souber o suficiente, será uma ferramenta sempre à disposição para ajudar você a escrever software com confiança.

Leitura adicional

Leituras relacionadas