Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
-
Upload
lucas-mezencio -
Category
Software
-
view
208 -
download
5
Transcript of Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
![Page 1: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/1.jpg)
Controle de Versão com Git e como Otimizar seu Workflow com git flow
Lucas Mezêncio | Dev In Company 18-07-2015
![Page 2: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/2.jpg)
whoami ■ Desenvolvedor Web desde 2007
■ PHP, JavaScript, ShellScript e Python
■ Certified Scrum Master
■ Organizador do PHP-MG
![Page 3: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/3.jpg)
Git ■ O que é Git
■ git flow
■ Dicas
![Page 4: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/4.jpg)
O que é Git
“cabeça dura, pessoas que acham que sempre tem razão, argumentativas”
![Page 5: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/5.jpg)
O que é o Git
“Git é um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com
ênfase em velocidade”
http://en.wikipedia.org/wiki/Git_(software)
![Page 6: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/6.jpg)
O que é o Git
“It's a stupid content tracker. It tracks files and folders.I really really designed it coming at the problem from
viewpoint of a file system person, I actually have absolutely zero interest in creating a traditional SCM
system.”
TORVALDS, Linus
![Page 7: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/7.jpg)
Porque o Git é bom?
■ Branching local simples
■ Tudo é local
■ Git é rápido
■ Git é pequeno
■ A área de staging
■ Distribuído
■ Vários tipos de workflows
■ Fácil de aprender
■ Uma puta comunidade
![Page 8: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/8.jpg)
■ O que iremos ver:
■ Trabalhar com git flow
■ Uma nova maneira de pensar o uso do Git
git flow
![Page 9: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/9.jpg)
Mas pra quê? Git é suficiente!
![Page 10: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/10.jpg)
Só um desenvolvedor
Imagem de: http://www.slideshare.net/Linoark/the-gitflow-way
![Page 11: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/11.jpg)
Parece bom
![Page 12: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/12.jpg)
Dois desenvolvedores
Imagem de: http://www.slideshare.net/Linoark/the-gitflow-way
![Page 13: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/13.jpg)
Ainda parece bom
![Page 15: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/15.jpg)
Afinal, o que é git flow?
■ Um conjunto de extensões para o Git
■ Um branching model simples
■ Uma solução baseada em merges
Imagem de: http://nvie.com/posts/a-successful-git-branching-model/
![Page 16: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/16.jpg)
Branches principais
■ master: pronto para a produção
■ develop: mais recente para a próxima release
![Page 17: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/17.jpg)
Branches principais
Git inicial para criar o branch develop, inicia o desenvolvimento
![Page 18: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/18.jpg)
Branches de suporte
■ feature
■ release
■ hotfix
![Page 19: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/19.jpg)
feature branches
■ Deve vir do branch develop
■ Deve voltar ao branch develop
■ Convenção de nome feature/*
![Page 20: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/20.jpg)
feature branches
■ Criar um branch de feature
■ Quando iniciar a nova feature, partir do branch develop
■ $ git checkout -b feature/minha-feature develop
![Page 21: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/21.jpg)
feature branches
■ Incorporar uma feature finalizada ao develop
■ Fazer merge no branch develop
■ $ git checkout develop
■ $ git merge --no-ff feature/minha-feature
■ $ git branch -d feature/minha-feature
■ $ git push origin develop
![Page 22: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/22.jpg)
feature branches
■ A flag --no-ff evita que informações de histórico da feature sejam perdidas
![Page 23: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/23.jpg)
![Page 24: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/24.jpg)
![Page 25: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/25.jpg)
![Page 26: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/26.jpg)
release branches
■ Deve vir do branch develop
■ Deve voltar aos branches develop e master
■ Convenção de nome: release/*
![Page 27: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/27.jpg)
release branches
■ Criando um branch de release
■ $ git checkout -b release/1.0 develop
■ Finalizando um branch de release ■ $ git checkout master
■ $ git merge --no-ff release/1.0
■ $ git tag -a 1.0
■ $ git checkout develop
■ $ git merge --no-ff release/1.0
■ $ git branch -d release/1.0
■ $ git push origin --all --tags
![Page 28: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/28.jpg)
![Page 29: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/29.jpg)
![Page 30: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/30.jpg)
![Page 31: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/31.jpg)
hotfix branches
■ Deve vir do branch master
■ Deve voltar aos branches develop e master
■ Convenção de nome: hotfix/*
![Page 32: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/32.jpg)
hotfix branches
■ Criando um branch de hotfix
■ $ git checkout -b hotfix/1.0.1 master
■ Finalizando um branch de hotfix ■ $ git checkout master
■ $ git merge --no-ff hotfix/1.0.1
■ $ git checkout develop
■ $ git merge --no-ff hotfix/1.0.1
■ $ git branch -d hotfix/1.0
■ $ git push origin master
![Page 33: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/33.jpg)
![Page 34: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/34.jpg)
![Page 35: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/35.jpg)
![Page 36: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/36.jpg)
Dicas ■ Dicas de utilização do Git
■ Ferramentas
![Page 37: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/37.jpg)
Aprenda Git pela linha de comando com muito amor, pare de usar GUI
GUI são extremamente falhos quando se tratam de merge e branching
![Page 38: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/38.jpg)
Somente algumas pessoas devem ser autorizadas a fazer merge do branch develop no master
para fazer a última revisão durante o merge por líderes técnicos
![Page 39: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/39.jpg)
Confira códigos alheios pelo menos uma vez ao dia
é melhor conferir sempre que possível
![Page 40: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/40.jpg)
Tenha certeza de que todos os testes estão passando antes de fazer push
![Page 41: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/41.jpg)
Não faça push de códigos não-testados, incompletos, não-compilando, a-ser-corrigido, não-pronto-para-deploy para o Git
faça push somente quando o código estiver pronto para deploy
![Page 42: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/42.jpg)
Faça comentários de distinção significativas para os commits
inclua ids de bugs ou histórias de usuário também
![Page 43: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/43.jpg)
Nunca use a flag -m <mensagem> nos commits e siga as boas práticas das mensagens de commit
■ Primeira linha com 50 caracteres ou menos. Ela é o resumo
■ Uma linha em branco
■ O restante do texto deve ser quebrado em 72 caracteres. Ele é a descrição detalhada
![Page 44: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/44.jpg)
Agrupe (git squash) os commits de uma história completa em um só antes de fazer push
nós não estamos interessados nos seus commits pessoais
![Page 45: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/45.jpg)
Agrupe os commits de um bug fix em apenas um commit que realmente representa aquele bug fix
![Page 46: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/46.jpg)
Nunca agrupe componentes logicamente diferentes em um mesmo commit
pense também no revert
![Page 47: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/47.jpg)
Faça vários commits, perfeccione depois, publique apenas uma vez
![Page 48: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/48.jpg)
Use o .gitignore para não levar arquivos irrelevantes
nunca faça push de binários irrelevantes, pacotes, arquivos compilados, arquivos temporários, arquivos relacionados ao IDE e ao SO
![Page 49: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/49.jpg)
Sempre revise seu código antes de fazer um commit
confira o que você está enviando para a área de staging
![Page 50: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/50.jpg)
Limpe branches não utilizados e desatualizados
e nunca exclua branches remotos que não foram mesclados
![Page 51: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/51.jpg)
Não faça reset sem antes fazer stash ou commit
ninguém quer perder códigos, né?
![Page 52: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/52.jpg)
Ferramentas
■ git flow: extensão para a linha de comando
■ git up: extensão para a linha de comando que ajuda bastante na hora de fazer pull
■ http://gitup.co/: GUI que forma o graph em tempo real
■ https://github.com/github/gitignore: Uma coleção de templates para o .gitignore
![Page 53: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/53.jpg)
Referências
■ http://nvie.com/posts/a-successful-git-branching-model/
■ https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
■ http://www.slideshare.net/Linoark/the-gitflow-way
■ http://www.slideshare.net/kenziii/gitflow-model
■ http://www.slideshare.net/lemiorhan/git-branching-model
■ http://www.slideshare.net/lemiorhan/git-and-git-workflow-models-as-catalysts-of-software-development
![Page 54: Controle de Versão com Git e como Otimizar seu Workflow com Git Flow](https://reader033.fdocuments.net/reader033/viewer/2022042511/55cf6ea4bb61eb25088b46d0/html5/thumbnails/54.jpg)
FIMhttp://about.me/lucasmezencio
http://slideshare.net/lucasmezencio
54