Diego Garcia
Pessoal:
● Pai
● Punk Rocker
● Cientista da computação frustrado
Profissional:
● Software Engineer na Magazine Luiza
Contatos:
● @drgarcia1986
Slide 4
Slide 4 text
Afinal de contas,
o que é o GIT?
Slide 5
Slide 5 text
O GIT é:
● Uma ferramenta de controle de versão.
● Open Source.
● Criado por Linus Torvalds.
● Trabalha de forma distribuída.
● Simples e fácil de apreender.
● Extremamente popular.
● Muito material bom disponível.
Slide 6
Slide 6 text
Alguns dos termos e comandos mais
comuns e mais importantes
Slide 7
Slide 7 text
Um snapshot do conteúdo inteiro do repositório com
informações extras sobre autor do commit,
committer e commit pai (se houver)
Commit
Slide 8
Slide 8 text
Um ponteiro independente para um commit (que
pode adicionar mais commits)
Branch
Slide 9
Slide 9 text
Determina em qual branch você está (qual ponteiro
você está usando no momento)
HEAD
Slide 10
Slide 10 text
Altera o HEAD para alguma branch existente (ou
cria uma nova)
Checkout
Slide 11
Slide 11 text
Área onde as alterações do repositório local são
monitoradas
Index
Slide 12
Slide 12 text
Mostra o estado dos arquivos atuais (monitorados
ou não) baseado no Index
Status
Slide 13
Slide 13 text
Tornar alterações "staged" ou seja, prontas para
entrar em um commit
Add
Slide 14
Slide 14 text
Clone
Cria um clone completo de um repositório remoto
em um repositório local
Slide 15
Slide 15 text
Atualiza o repositório remoto com as alterações
locais
Push
Slide 16
Slide 16 text
Pull
Atualiza o repositório local com as alterações
remotas
Slide 17
Slide 17 text
Atualiza as referências de branches e tags remotas
para o repositório local
Fetch
Slide 18
Slide 18 text
Um ponteiro estático para um commit (pode ser
imaginado como um label)
Tag
Slide 19
Slide 19 text
Estratégia de fusão que cria um novo commit com
as diferenças entre as branches
Merge
Slide 20
Slide 20 text
Estratégia de fusão que reorganiza os commits
aplicando os commits de uma branch após o commit
de outra
Rebase
Slide 21
Slide 21 text
Representação gráfica do Grafo de um
repositório
Slide 22
Slide 22 text
Fonte: Git Pocket Guide: A Working Introduction
Slide 23
Slide 23 text
Um fluxo simples e comum de trabalho
Slide 24
Slide 24 text
Adicionando uma nova feature
● Atualiza a "master" local:
$ git checkout master
$ git pull
● Cria a branch nova:
$ git checkout -b feature-x
● Realiza as alterações na base de código
● Coloque as alterações em stage
$ git add main.c feature-x.c
● Crie o commit
$ git commit -m 'Add Feature X on main file'
● Envie as alterações para o remoto:
$ git push -u origin feature-x
Slide 25
Slide 25 text
Alguns comandos interessantes
Slide 26
Slide 26 text
Será muito comum consultar a árvore/grafo de
commits
log
Sugestão: git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)
%C(bold blue)<%an>%Creset' --abbrev-commit
Slide 27
Slide 27 text
diff
Extremamente útil para ver o conteúdo em index
ainda não "staged"
Dica: use a opção --staged para ver o que irá entrar no próximo commit
Slide 28
Slide 28 text
Permite aplicar o conjunto de alterações de um
commit como um novo commit na branch atual
cherry-pick
Slide 29
Slide 29 text
Rebase *i*nterativo, permite fazer alterações
sofisticadas em um conjunto de commits (e.g.
squad, re-word, delete, etc)
rebase -i
Slide 30
Slide 30 text
Remove o commit anterior e cria um novo com o
conteúdo do anterior mais as alterações "staged"
atuais.
ammend
Slide 31
Slide 31 text
Boas Práticas
Baseadas somente na minha opinião e minhas experiências
Slide 32
Slide 32 text
São mais fáceis para serem revisados, mais fáceis
para serem localizados (capriche na mensagem) e
mais fáceis de serem aproveitados
Commits pequenos com
apenas um objetivo
Slide 33
Slide 33 text
Nunca suba lixo ou arquivos protegidos para o
repositório remoto
.gitignore
Slide 34
Slide 34 text
Tente manter a árvore o mais limpa possível (mas
às vezes é necessário)
Evite branches de branches
Slide 35
Slide 35 text
Lembre-se, mantenha a árvore limpa, um commit de
"fix typo foo" sendo que esse typo foi feito na branch
corrente, não faz sentido.
Faça squash de commits
não significativos
Slide 36
Slide 36 text
A estratégia de merge pode bagunçar a árvore de
commits e dificultar a leitura do histórico do projeto.
Prefira sempre rebase ao
invés de merge
Slide 37
Slide 37 text
Mantenha sempre uma referência para consulta ou
rebuild de seus releases com uma TAG.
Sempre faça seus releases
baseados em TAGs
Slide 38
Slide 38 text
Onde conseguir mais informação?
Slide 39
Slide 39 text
Pro GIT
● Ebook Gratuito.
● Disponível em PDF, Mobi, ePub e Web.
● Tradução para o português disponível
(somente WEB)
● https://git-scm.com/book/en/v2
Slide 40
Slide 40 text
Porém, o mais importante é:
Slide 41
Slide 41 text
A melhor maneira de
aprender GIT é
Se fudendo Usando.