Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Controle de Versão com Git e como Otimizar seu ...

Controle de Versão com Git e como Otimizar seu Workflow com Git Flow

Palestra sobre Git e a otimização do workflow de controle de versão com Git Flow, apresentada no Dev In Company no dia 18 de julho de 2015

Lucas Araújo Mezêncio

July 18, 2015
Tweet

More Decks by Lucas Araújo Mezêncio

Other Decks in Programming

Transcript

  1. Controle de Versão com Git e como Otimizar seu Workflow

    com git flow Lucas Mezêncio | Dev In Company 18-07-2015
  2. whoami ▪ Desenvolvedor Web desde 2007 ▪ PHP, JavaScript, ShellScript

    e Python ▪ Certified Scrum Master ▪ Organizador do PHP-MG
  3. O que é Git “cabeça dura, pessoas que acham que

    sempre tem razão, argumentativas”
  4. 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)
  5. 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
  6. 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
  7. ▪ O que iremos ver: ▪ Trabalhar com git flow

    ▪ Uma nova maneira de pensar o uso do Git git flow
  8. 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/
  9. feature branches ▪ Deve vir do branch develop ▪ Deve

    voltar ao branch develop ▪ Convenção de nome feature/*
  10. feature branches ▪ Criar um branch de feature ▪ Quando

    iniciar a nova feature, partir do branch develop
 ▪ $ git checkout -b feature/minha-feature develop
  11. 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
  12. release branches ▪ Deve vir do branch develop ▪ Deve

    voltar aos branches develop e master ▪ Convenção de nome: release/*
  13. 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
  14. hotfix branches ▪ Deve vir do branch master ▪ Deve

    voltar aos branches develop e master ▪ Convenção de nome: hotfix/*
  15. 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
  16. 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
  17. 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
  18. Confira códigos alheios pelo menos uma vez ao dia é

    melhor conferir sempre que possível
  19. 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
  20. 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
  21. 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
  22. Agrupe os commits de um bug fix em apenas um

    commit que realmente representa aquele bug fix
  23. 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
  24. Sempre revise seu código antes de fazer um commit confira

    o que você está enviando para a área de staging
  25. 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