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 statusgit addgit commitgit 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:

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:

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:

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.

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 temporariamentegit stash pop, restaura as mudançasgit 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.