Download - Introducao git fisl
Introdução ao Git(Por que não consigo mais usar SVN)
Oi!Hanneli (a.k.a. @hannelita)!
Software developer!
Middleware Consultant at !
Café e Pokémon <3
O que vamos ver hoje?Controle de versão - por que preciso disso?!
O surgimento do Git!
Primeiros passos com Git!
Para onde ir depois do básico!
Fotos e GIFS
Yet another talk about Git?Tenho dificuldade para aprender.
Palestra com primeiros passos QUE FUNCIONAM, sem complicação.
Seu primeiro dia numa empresa
Seu primeiro dia numa empresa
Code Code Code
Se o projeto já está andando, alguém precisa lhe fornecer o código
Como obter o código?
1. Pendrive?
Pendrive?Rápido
#COMOFAZ
SMP
Sincronização Manual de Pendrives não parece legal.
2. Compartilhar pela rede
Projeto
Compartilhar pela rede
Compartilhar pela redeTodos com acesso ao código
Compartilhar pela redeTodos com acesso ao código
LOL.java WTFWTF.java
LOL.java
#COMOFAZ
Nenhum dos casos parece ser um bom cenário para distribuir e organizar o código numa equipe.
Evolução nos repositórios de código
Versão 3!Versão 2!Versão 1
SVN
SVNAjuda com o Merge
Código Centralizado
Versionar de forma fácil e intuitiva
Problem Solved!
Problemas
• Conflitos
Problemas• Como interromper a criação de uma tarefa e
começar outra?
Problemas• Quero começar uma feature a partir de um código
que você ainda não comittou
Problemas• A PASTA .svn CORROMPEU!
Algo mais eficiente
De volta a 2005
Manter o Kernel!
Manter o Kernel!
Versão 3!Versão 2!Versão 1
Controle de versão distribuído
Git
Quais suas primeiras impressões sobre Git?
• SVN é mais fácil!
• Git é muito complexo
• Não sei mexer nisso!
Por que Git parece tão traumático?
Por que Git parece tão traumático?
• Command Line
• Comandos são diferentes do SVN
• Novos conceitos
Supere seus medos
Git - primeiros passos1. Obter cópia local do
projeto
2. Receber alterações
3. Merge das alterações locais com remotas
4. Compartilhar alterações
git clone <URL do repo>
git pull
git add <FILE>!git commit -m “Commit"!
git push
git remote add remote_repo <URL repo>
Acredite, isso já resolve muitos casos de uso.
Git - e os conflitos?
A Receita de Bolo para minimizar conflitos
• Faça suas alterações
• git checkout -b work
• git add <alterações>
• git commit -m "Alterações"
• git checkout master
• git pull
• git checkout work
• git rebase master
• git checkout master
• git merge work
• git push
A Receita de Bolo para minimizar conflitos
Explicando a receita
(programe, duh)
1. Faça suas alterações
2. git checkout -b work
Explicando a receita
O Git permite que você trabalhe em diferentes 'workspaces'
Explicando a receita
Projeto (cópia local)
git checkout -b
"Cópia" da cópia local
Posso alternar entre as "cópias"Uma “cópia" não é uma cópia em discoUma “cópia" é um snapshot
Branch
BranchesExplicando a receita
Projeto (cópia local)
Branch master
git checkout -b workSnapshot
Branch workBaseado na branch master
git checkout -b lolol
SnapshotBranch lolol
Baseado na branch work
Cria nova branch
Explicando a receita3. git add <alterações>
“Git, essas alterações são importantes! Quero que meu Snapshot as veja!"
4. git commit -m "Mensagem"
Meu snapshot local possui as alterações que quero enviar para o repositório remoto
Explicando a receita5. git checkout master
branch work
git checkout
branch master
git checkout <nome Branch>
Alterna entre branches existentes
Explicando a receita6. git pull
branch master
Pega as alterações do repositório remoto e faz merge
Explicando a receitaOnde fizemos as alterações? Master ou work?
Se você não alterar o master, pode ter sempre uma cópia local do repositório atualizado sem ter conflitos!
Explicando a receita7. git checkout work
branch master
git checkout
branch work
Explicando a receita8. git rebase master
Explicando a receitaExistem 2 formas para fazer merge no Git
git merge git rebaserebase possui vários usosOcorre ao fazer um git pull
"rebase faz um merge mais inteligente"
Explicando a receitaPor que tive que trocar de branch para fazer rebase?
"rebase faz um merge mais inteligente"
Axioma
Só é seguro fazer rebase em branches locaisSe não criássemos outra branch, faríamos:
branch master
rebase
Explicando a receita
Explicando a receitaA chance de não ocorrer conflitos com rebase é maior do que
com git merge
"rebase faz um merge mais inteligente"
Só é seguro fazer rebase em branches locais
Explicando a receita
Deixe os conflitos ocorrerem em sua snapshot de trabalho.
branch work
Explicando a receita9. git checkout master
branch work
git checkout
branch master
Explicando a receita10. git merge work
Se o rebase foi bem sucedido, o merge não terá problema
branch master
git rebase
branch work
Conflitos!ocorrem!
aqui
git merge
Explicando a receita11. git push
Envia as alterações para o repositório remoto
branch master
Complementando a receita11. git branch -d work
Remove a branch work. Nesse momento ela não é mais útil.Uma nova task, uma nova branch
Onde posso conseguir um servidor Git?
Faça um ;D
Github
Bitbucket
E aquela história de ‘controle de versão distribuído’?
git remote add server <URL>
server
git remote add Outro_server <URL2>
Outro_server
Próximos passos de estudoBranches remotas
git stashgit resetgit revert
git bisect
git blame
Hooks git config
Ferramentas gráficas
Depois de um tempo com Git…
NÃO CONSIGO VOLTARA PARA O SVN!