O documento apresenta uma introdução ao Git, incluindo sua história, características, vantagens e desvantagens em comparação a sistemas centralizados. Apresenta também os principais comandos do Git e uma sugestão de uso de feature branches.
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
• 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
• 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?
• 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?
• 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