Git - Controle de Versões do Jeito Certo

Preview:

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?

Obrigado!@arthurgeek

http://busk.comEstamos contratando! ;)

Recommended