Upload
arthur-zapparoli
View
11.734
Download
0
Embed Size (px)
DESCRIPTION
Palestra de Introdução ao Git que apresentei no Rails Summit 09. Infelizmente, sem os screencasts no final, os slides não fazem muito sentido.
Citation preview
Git: Controle de versões do jeito certo
Arthur Zapparoli@arthurgeek
Arthur?
Arthur?
• ArthurGeek
Arthur?
• ArthurGeek
• http://arthurgeek.net
Arthur?
• ArthurGeek
• http://arthurgeek.net
• @arthurgeek
Agenda
Agenda
• VCS
• O que é?
• Vantagens
• Como funciona?
• Centralizado x Distribuído
Agenda
Agenda
• Git
• O que é?
• Características básicas
• Particularidades
• Instalando
Agenda
Agenda
• Git
• Configurando
• Iniciando um repositório
• Workflow básico
• Workflow remoto
Pesquisa
Pesquisa
• Quem não usa NENHUM controle de versões?
Pesquisa
• Quem não usa NENHUM controle de versões?
• CVS?
Pesquisa
• Quem não usa NENHUM controle de versões?
• CVS?
• Subversion?
Pesquisa
• Quem não usa NENHUM controle de versões?
• CVS?
• Subversion?
• Algum outro?
VCS: O que é?
VCS: O que é?
• um software para gerenciar diferentes versões de um documento qualquer
VCS: O que é?
• um software para gerenciar diferentes versões de um documento qualquer
• o processo de guardar o histórico de alterações de diferentes arquivos.
VCS: Vantagens
• Backup automático de todos arquivos
VCS: Vantagens
• Backup automático de todos arquivos
• Controle do histórico
VCS: Vantagens
• Backup automático de todos arquivos
• Controle do histórico
• Trabalho em equipe
VCS: Vantagens
• Backup automático de todos arquivos
• Controle do histórico
• Trabalho em equipe
• Marcação e resgate de versões estáveis
VCS: Vantagens
• Backup automático de todos arquivos
• Controle do histórico
• Trabalho em equipe
• Marcação e resgate de versões estáveis
• Ramificação do projeto
VCS: Vantagens
VCS: Como funciona?
VCS: Como funciona?
Repositório
VCS: Como funciona?
Pedro
Repositório
VCS: Como funciona?
Pedro
Repositório
Checkout
VCS: Como funciona?
Pedro
Repositório
Modifica
Checkout
VCS: Como funciona?
Pedro
Repositório
Modifica
Repositório
CommitC
heckout
Lorem
Ipsum
VCS: Centralizado x Distribuído
VCS: Modelo Centralizado
VCS: Modelo Centralizado
• Repositório fica armazanedo em um servidor central
VCS: Modelo Centralizado
• Repositório fica armazanedo em um servidor central
• Os desenvolvedores ao fazerem um checkout, obtêm uma cópia da última revisão do repositório
VCS: Modelo Centralizado
• Repositório fica armazanedo em um servidor central
• Os desenvolvedores ao fazerem um checkout, obtêm uma cópia da última revisão do repositório
• Somente usuários autorizados podem fazer commits
VCS: Modelo Centralizado
Repositório
Checkout
Commit
Checkout C
ommit
Checkout
Comm
it
Checkout
Commit
Checkout
Commit
Pedro Sílvia
Ana Carlos
Guilherme
VCS: Modelo Distribuído
VCS: Modelo Distribuído
• Cada projeto é um repositório completo, com histórico total
VCS: Modelo Distribuído
• Cada projeto é um repositório completo, com histórico total
• Independe de acesso à rede ou um servidor central
VCS: Modelo Distribuído
• Cada projeto é um repositório completo, com histórico total
• Independe de acesso à rede ou um servidor central
• Commits podem ser feitos offline
VCS: Modelo Distribuído
• Cada projeto é um repositório completo, com histórico total
• Independe de acesso à rede ou um servidor central
• Commits podem ser feitos offline
• Commits podem ser transferidos de um repositório para outro facilmente
VCS: Modelo Distribuído
Pull
Push
Pull
Push
Push
Push
Push
Pull
Pedro
Ana
Carlos
Sílvia
Guilherme
Git: O que é?
Git: O que é?
• Um projeto Open Source (GPL v2)
Git: O que é?
• Um projeto Open Source (GPL v2)
• Originalmente escrito por Linus Torvalds em 2005
Git: O que é?
• Um projeto Open Source (GPL v2)
• Originalmente escrito por Linus Torvalds em 2005
• Atualmente é mantido por Junio Hamano
Git: O que é?
• Um projeto Open Source (GPL v2)
• Originalmente escrito por Linus Torvalds em 2005
• Atualmente é mantido por Junio Hamano
• Desenvolvido para manter o Kernel do Linux
Git: O que é?
• Um projeto Open Source (GPL v2)
• Originalmente escrito por Linus Torvalds em 2005
• Atualmente é mantido por Junio Hamano
• Desenvolvido para manter o Kernel do Linux
• Sistema de controle de versões distribuído
Git: O que é?
• Um projeto Open Source (GPL v2)
• Originalmente escrito por Linus Torvalds em 2005
• Atualmente é mantido por Junio Hamano
• Desenvolvido para manter o Kernel do Linux
• Sistema de controle de versões distribuído
• Foco em rapidez, eficiência e uso em grandes projetos
Git: Características Básicas
Git: Características Básicas
• Suporte para desenvolvimento não-linear
Git: Características Básicas
• Suporte para desenvolvimento não-linear
• Desenvolvimento distribuído
Git: Características Básicas
• Suporte para desenvolvimento não-linear
• Desenvolvimento distribuído
• Compatibilidade com sistemas/protocolos existentes
Git: Características Básicas
• Suporte para desenvolvimento não-linear
• Desenvolvimento distribuído
• Compatibilidade com sistemas/protocolos existentes
• Manipulação eficiente de grandes projetos
Git: Características Básicas
• Suporte para desenvolvimento não-linear
• Desenvolvimento distribuído
• Compatibilidade com sistemas/protocolos existentes
• Manipulação eficiente de grandes projetos
• Limpo
• Staging Index
• HEAD, HEAD^, HEAD^^, HEAD~2
Git: Características Básicas
• Staging Index
• HEAD, HEAD^, HEAD^^, HEAD~2
• SHA1s ao invés de revision numbers
• f5f75c652b9c2347522159a87297820103e593e4
• f5f75c
Git: Características Básicas
Git: Instalando
Git: Instalando
• Windows
• http://code.google.com/p/msysgit/
Git: Instalando
• Windows
• http://code.google.com/p/msysgit/
• Mac OS X
• http://code.google.com/p/git-osx-installer
Git: Instalando
• Windows
• http://code.google.com/p/msysgit/
• Mac OS X
• http://code.google.com/p/git-osx-installer
• Linux
• De acordo com sua distro favorita ou à partir do fonte
Git: Configurando
Git: Configurando
Git: Configurando
Usar --global faz com que a mesma configuração seja usada em todos os projetos
Git: Iniciando um repositório
Git: Iniciando um repositório
Git: Iniciando um repositório
O diretório objects armazena todos os objetos do Git: commits, trees, blobs, etc.
Git: Workflow básico
Git: Workflow básico
Git: Workflow básico
git status, git add, git commit, git log, git commit -a
Git: Workflow básico
Git: Workflow básico
git diff, git blame, git reset, git commit -v, .gitignore
Git: Branching
Git: Branching
Git: Branching
git branch, git checkout, gitk, git merge, git branch -d/-D, git checkout -b
Git: Branching
Git: Branching
git merge com modificações no mesmo arquivo
Git: Branching
Git: Branching
git rebase, merge conflicts, git rebase --continue
Git: Remote Workflow
Git: Remote Workflow
Git: Remote Workflow
git clone, git push, git pull, git fetch
Git: Tópicos Avançados
• git commit --interactive
• git rebase --interactive
• bisect
• cherry-pick
• git commit --ammend
• reflog
Perguntas?