86
Git: Controle de versões do jeito certo Arthur Zapparoli @arthurgeek

Git - Controle de Versões do Jeito Certo

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

Page 1: Git - Controle de Versões do Jeito Certo

Git: Controle de versões do jeito certo

Arthur Zapparoli@arthurgeek

Page 2: Git - Controle de Versões do Jeito Certo

Arthur?

Page 3: Git - Controle de Versões do Jeito Certo

Arthur?

• ArthurGeek

Page 4: Git - Controle de Versões do Jeito Certo

Arthur?

• ArthurGeek

• http://arthurgeek.net

Page 5: Git - Controle de Versões do Jeito Certo

Arthur?

• ArthurGeek

• http://arthurgeek.net

• @arthurgeek

Page 6: Git - Controle de Versões do Jeito Certo

Agenda

Page 7: Git - Controle de Versões do Jeito Certo

Agenda

• VCS

• O que é?

• Vantagens

• Como funciona?

• Centralizado x Distribuído

Page 8: Git - Controle de Versões do Jeito Certo

Agenda

Page 9: Git - Controle de Versões do Jeito Certo

Agenda

• Git

• O que é?

• Características básicas

• Particularidades

• Instalando

Page 10: Git - Controle de Versões do Jeito Certo

Agenda

Page 11: Git - Controle de Versões do Jeito Certo

Agenda

• Git

• Configurando

• Iniciando um repositório

• Workflow básico

• Workflow remoto

Page 12: Git - Controle de Versões do Jeito Certo

Pesquisa

Page 13: Git - Controle de Versões do Jeito Certo

Pesquisa

• Quem não usa NENHUM controle de versões?

Page 14: Git - Controle de Versões do Jeito Certo

Pesquisa

• Quem não usa NENHUM controle de versões?

• CVS?

Page 15: Git - Controle de Versões do Jeito Certo

Pesquisa

• Quem não usa NENHUM controle de versões?

• CVS?

• Subversion?

Page 16: Git - Controle de Versões do Jeito Certo

Pesquisa

• Quem não usa NENHUM controle de versões?

• CVS?

• Subversion?

• Algum outro?

Page 17: Git - Controle de Versões do Jeito Certo

VCS: O que é?

Page 18: Git - Controle de Versões do Jeito Certo

VCS: O que é?

• um software para gerenciar diferentes versões de um documento qualquer

Page 19: Git - Controle de Versões do Jeito Certo

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.

Page 20: Git - Controle de Versões do Jeito Certo

VCS: Vantagens

Page 21: Git - Controle de Versões do Jeito Certo

• Backup automático de todos arquivos

VCS: Vantagens

Page 22: Git - Controle de Versões do Jeito Certo

• Backup automático de todos arquivos

• Controle do histórico

VCS: Vantagens

Page 23: Git - Controle de Versões do Jeito Certo

• Backup automático de todos arquivos

• Controle do histórico

• Trabalho em equipe

VCS: Vantagens

Page 24: Git - Controle de Versões do Jeito Certo

• Backup automático de todos arquivos

• Controle do histórico

• Trabalho em equipe

• Marcação e resgate de versões estáveis

VCS: Vantagens

Page 25: Git - Controle de Versões do Jeito Certo

• 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

Page 26: Git - Controle de Versões do Jeito Certo

VCS: Como funciona?

Page 27: Git - Controle de Versões do Jeito Certo

VCS: Como funciona?

Repositório

Page 28: Git - Controle de Versões do Jeito Certo

VCS: Como funciona?

Pedro

Repositório

Page 29: Git - Controle de Versões do Jeito Certo

VCS: Como funciona?

Pedro

Repositório

Checkout

Page 30: Git - Controle de Versões do Jeito Certo

VCS: Como funciona?

Pedro

Repositório

Modifica

Checkout

Page 31: Git - Controle de Versões do Jeito Certo

VCS: Como funciona?

Pedro

Repositório

Modifica

Repositório

CommitC

heckout

Lorem

Ipsum

Page 32: Git - Controle de Versões do Jeito Certo

VCS: Centralizado x Distribuído

Page 33: Git - Controle de Versões do Jeito Certo

VCS: Modelo Centralizado

Page 34: Git - Controle de Versões do Jeito Certo

VCS: Modelo Centralizado

• Repositório fica armazanedo em um servidor central

Page 35: Git - Controle de Versões do Jeito Certo

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

Page 36: Git - Controle de Versões do Jeito Certo

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

Page 37: Git - Controle de Versões do Jeito Certo

VCS: Modelo Centralizado

Repositório

Checkout

Commit

Checkout C

ommit

Checkout

Comm

it

Checkout

Commit

Checkout

Commit

Pedro Sílvia

Ana Carlos

Guilherme

Page 38: Git - Controle de Versões do Jeito Certo

VCS: Modelo Distribuído

Page 39: Git - Controle de Versões do Jeito Certo

VCS: Modelo Distribuído

• Cada projeto é um repositório completo, com histórico total

Page 40: Git - Controle de Versões do Jeito Certo

VCS: Modelo Distribuído

• Cada projeto é um repositório completo, com histórico total

• Independe de acesso à rede ou um servidor central

Page 41: Git - Controle de Versões do Jeito Certo

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

Page 42: Git - Controle de Versões do Jeito Certo

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

Page 43: Git - Controle de Versões do Jeito Certo

VCS: Modelo Distribuído

Pull

Push

Pull

Push

Push

Push

Push

Pull

Pedro

Ana

Carlos

Sílvia

Guilherme

Page 44: Git - Controle de Versões do Jeito Certo

Git: O que é?

Page 45: Git - Controle de Versões do Jeito Certo

Git: O que é?

• Um projeto Open Source (GPL v2)

Page 46: Git - Controle de Versões do Jeito Certo

Git: O que é?

• Um projeto Open Source (GPL v2)

• Originalmente escrito por Linus Torvalds em 2005

Page 47: Git - Controle de Versões do Jeito Certo

Git: O que é?

• Um projeto Open Source (GPL v2)

• Originalmente escrito por Linus Torvalds em 2005

• Atualmente é mantido por Junio Hamano

Page 48: Git - Controle de Versões do Jeito Certo

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

Page 49: Git - Controle de Versões do Jeito Certo

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

Page 50: Git - Controle de Versões do Jeito Certo

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

Page 51: Git - Controle de Versões do Jeito Certo

Git: Características Básicas

Page 52: Git - Controle de Versões do Jeito Certo

Git: Características Básicas

• Suporte para desenvolvimento não-linear

Page 53: Git - Controle de Versões do Jeito Certo

Git: Características Básicas

• Suporte para desenvolvimento não-linear

• Desenvolvimento distribuído

Page 54: Git - Controle de Versões do Jeito Certo

Git: Características Básicas

• Suporte para desenvolvimento não-linear

• Desenvolvimento distribuído

• Compatibilidade com sistemas/protocolos existentes

Page 55: Git - Controle de Versões do Jeito Certo

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

Page 56: Git - Controle de Versões do Jeito Certo

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

Page 57: Git - Controle de Versões do Jeito Certo

• Staging Index

• HEAD, HEAD^, HEAD^^, HEAD~2

Git: Características Básicas

Page 58: Git - Controle de Versões do Jeito Certo

• Staging Index

• HEAD, HEAD^, HEAD^^, HEAD~2

• SHA1s ao invés de revision numbers

• f5f75c652b9c2347522159a87297820103e593e4

• f5f75c

Git: Características Básicas

Page 59: Git - Controle de Versões do Jeito Certo

Git: Instalando

Page 60: Git - Controle de Versões do Jeito Certo

Git: Instalando

• Windows

• http://code.google.com/p/msysgit/

Page 61: Git - Controle de Versões do Jeito Certo

Git: Instalando

• Windows

• http://code.google.com/p/msysgit/

• Mac OS X

• http://code.google.com/p/git-osx-installer

Page 62: Git - Controle de Versões do Jeito Certo

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

Page 63: Git - Controle de Versões do Jeito Certo

Git: Configurando

Page 64: Git - Controle de Versões do Jeito Certo

Git: Configurando

Page 65: Git - Controle de Versões do Jeito Certo

Git: Configurando

Usar --global faz com que a mesma configuração seja usada em todos os projetos

Page 66: Git - Controle de Versões do Jeito Certo

Git: Iniciando um repositório

Page 67: Git - Controle de Versões do Jeito Certo

Git: Iniciando um repositório

Page 68: Git - Controle de Versões do Jeito Certo

Git: Iniciando um repositório

O diretório objects armazena todos os objetos do Git: commits, trees, blobs, etc.

Page 69: Git - Controle de Versões do Jeito Certo

Git: Workflow básico

Page 70: Git - Controle de Versões do Jeito Certo

Git: Workflow básico

Page 71: Git - Controle de Versões do Jeito Certo

Git: Workflow básico

git status, git add, git commit, git log, git commit -a

Page 72: Git - Controle de Versões do Jeito Certo

Git: Workflow básico

Page 73: Git - Controle de Versões do Jeito Certo

Git: Workflow básico

git diff, git blame, git reset, git commit -v, .gitignore

Page 74: Git - Controle de Versões do Jeito Certo

Git: Branching

Page 75: Git - Controle de Versões do Jeito Certo

Git: Branching

Page 76: Git - Controle de Versões do Jeito Certo

Git: Branching

git branch, git checkout, gitk, git merge, git branch -d/-D, git checkout -b

Page 77: Git - Controle de Versões do Jeito Certo

Git: Branching

Page 78: Git - Controle de Versões do Jeito Certo

Git: Branching

git merge com modificações no mesmo arquivo

Page 79: Git - Controle de Versões do Jeito Certo

Git: Branching

Page 80: Git - Controle de Versões do Jeito Certo

Git: Branching

git rebase, merge conflicts, git rebase --continue

Page 81: Git - Controle de Versões do Jeito Certo

Git: Remote Workflow

Page 82: Git - Controle de Versões do Jeito Certo

Git: Remote Workflow

Page 83: Git - Controle de Versões do Jeito Certo

Git: Remote Workflow

git clone, git push, git pull, git fetch

Page 84: Git - Controle de Versões do Jeito Certo

Git: Tópicos Avançados

• git commit --interactive

• git rebase --interactive

• bisect

• cherry-pick

• git commit --ammend

• reflog

Page 85: Git - Controle de Versões do Jeito Certo

Perguntas?

Page 86: Git - Controle de Versões do Jeito Certo

Obrigado!@arthurgeek

http://busk.comEstamos contratando! ;)