GIT DESDE O INÍCIO
Insights e dicas poderosas de uso
Thiago dos Santos
• Casado
• Pai de dois
• Desenvolvedor de software
• Trabalho com tecnologias web e Microsoft há mais de 8 anos
• Gosto de arquitetura de software
• Entusiasta de investimentos
• Gamer quase nunca em horas raras
Quem sou eu?
/in/thiago-santos-dev
• História do GIT
• VCS distribuído x Centralizado
• Vantagens
• Desvantagens
• Quando utilizar?
• Principais comandos
• Sugestão de uso com feature branchs
• Hands on
AGENDA
HISTÓRIA DO GIT
Criado por
• Criado em 2005 por Linus Torvalds para o desenvolvimento do Linux
• Concebido para coordenar o trabalho entre programadores
• Inspirado no SCM Bitkeeper
HISTÓRIA DO GIT
GIT É CONSIDERADO UM INSULTO DE
ORIGEM INGLESA
desagradável, incompetente, irritante...
• Rápido (muito rápido) e escalável
• Desenhado do ponto de vista do filesystem
• Compatibilidade com protocolos existentes
• HTTP
• FTP
• SSH
• Escrito majoritariamente em C
• Costumizável (aliás)
CARÁCTERÍSTICAS
óbvio
• Repositório centralizado no server
• Lento
• Oneroso criar branches
• Todo commit é enviado ao server
• Engessado
• Conflitos constantes
Version Control System (VCS) Centralizado
• O repositório fica na máquina de cada programador
• O envio de código para a origem é flexível
• Histórico facilmente acessível
• Rastreável
• Leve
VCS Distribuído
• Rápido
• Criar branches é fácil e barato
• Merges não são (muito) traumáticos
• Alteração é fácil e rastreável
• Multi plataforma
• Integra-se facilmente com rotinas de devops
• Uso de tags para demarcar o código até aquele momento – muito
utilizado para releases
• Linha de comando
Quais as vantagens?
LINHA DE COMANDO
voltou com tudo em tudo
• Sistemas com grandes históricos podem ser difíceis de entender os
commits
• Muuuuitos comandos!
• Várias formas de fazer a mesma coisa
• Exige mudança de mindset para quem vem dos VCS’ centralizados –
principalmente SVN
• Árvore de commits principal pode ficar facilmente bagunçada e difícil
de entender
• GUI’s para o git costumam ser lentas e ocultar operações
E as desvantagens?
QUANDO UTILIZAR?
SEMPRE!
Estamos em 2019
• Branches que se derivam da master para pequenas
funcionalidades
• Ciclo de vida curto: devem ser apagadas após o merge com a
master
• Normalmente está atrelada à alguma task de
desenvolvimento
• Permite ao desenvolvedor muita flexibilidade durante o
desenvolvimento
• Pode gerar efeitos indesejáveis na árvore da branch principal
Introdução à feature branches
BRANCH EVERYWHERE
tudo é branch
NEM TUDO SÃO FLORES 
➢ git status
➢ git add
➢ git restore
➢ git commit
➢ git push
➢ git checkout
➢ git branch
➢ git pull
➢ git rebase
➢ git fetch
Principais comandos
➢ git clone
➢ git cherry-pick
➢ git blame
➢ git reset
➢ git stash
HANDS ON!
OBRIGADO! ☺
ps: mantenham suas árvores limpas, sempre ☺

Git desde o inicio

  • 1.
    GIT DESDE OINÍCIO Insights e dicas poderosas de uso
  • 2.
    Thiago dos Santos •Casado • Pai de dois • Desenvolvedor de software • Trabalho com tecnologias web e Microsoft há mais de 8 anos • Gosto de arquitetura de software • Entusiasta de investimentos • Gamer quase nunca em horas raras Quem sou eu? /in/thiago-santos-dev
  • 3.
    • História doGIT • VCS distribuído x Centralizado • Vantagens • Desvantagens • Quando utilizar? • Principais comandos • Sugestão de uso com feature branchs • Hands on AGENDA
  • 4.
  • 5.
  • 6.
    • Criado em2005 por Linus Torvalds para o desenvolvimento do Linux • Concebido para coordenar o trabalho entre programadores • Inspirado no SCM Bitkeeper HISTÓRIA DO GIT
  • 7.
    GIT É CONSIDERADOUM INSULTO DE ORIGEM INGLESA desagradável, incompetente, irritante...
  • 8.
    • Rápido (muitorápido) e escalável • Desenhado do ponto de vista do filesystem • Compatibilidade com protocolos existentes • HTTP • FTP • SSH • Escrito majoritariamente em C • Costumizável (aliás) CARÁCTERÍSTICAS
  • 9.
  • 10.
    • Repositório centralizadono server • Lento • Oneroso criar branches • Todo commit é enviado ao server • Engessado • Conflitos constantes Version Control System (VCS) Centralizado
  • 12.
    • O repositóriofica na máquina de cada programador • O envio de código para a origem é flexível • Histórico facilmente acessível • Rastreável • Leve VCS Distribuído
  • 14.
    • Rápido • Criarbranches é fácil e barato • Merges não são (muito) traumáticos • Alteração é fácil e rastreável • Multi plataforma • Integra-se facilmente com rotinas de devops • Uso de tags para demarcar o código até aquele momento – muito utilizado para releases • Linha de comando Quais as vantagens?
  • 15.
    LINHA DE COMANDO voltoucom tudo em tudo
  • 16.
    • Sistemas comgrandes históricos podem ser difíceis de entender os commits • Muuuuitos comandos! • Várias formas de fazer a mesma coisa • Exige mudança de mindset para quem vem dos VCS’ centralizados – principalmente SVN • Árvore de commits principal pode ficar facilmente bagunçada e difícil de entender • GUI’s para o git costumam ser lentas e ocultar operações E as desvantagens?
  • 17.
  • 18.
    • Branches quese derivam da master para pequenas funcionalidades • Ciclo de vida curto: devem ser apagadas após o merge com a master • Normalmente está atrelada à alguma task de desenvolvimento • Permite ao desenvolvedor muita flexibilidade durante o desenvolvimento • Pode gerar efeitos indesejáveis na árvore da branch principal Introdução à feature branches
  • 19.
  • 20.
    NEM TUDO SÃOFLORES 
  • 21.
    ➢ git status ➢git add ➢ git restore ➢ git commit ➢ git push ➢ git checkout ➢ git branch ➢ git pull ➢ git rebase ➢ git fetch Principais comandos ➢ git clone ➢ git cherry-pick ➢ git blame ➢ git reset ➢ git stash
  • 22.
  • 23.
    OBRIGADO! ☺ ps: mantenhamsuas árvores limpas, sempre ☺