git em ambiente subversion

74
Visão Geral do Git Aplicando Git em ambiente Subversion

Upload: willian-fernandes

Post on 05-Jul-2015

1.405 views

Category:

Technology


0 download

DESCRIPTION

TechTalk apresentado na Visie, mostrando como o Git funciona para a equipe que está acostumada com Subversion

TRANSCRIPT

Page 1: Git em ambiente Subversion

Visão Geral do GitAplicando Git em ambiente Subversion

Page 2: Git em ambiente Subversion

Porque Git?

Page 3: Git em ambiente Subversion

Porque Git?

• Orinalmente foi escrito por Linus Torvalds;

Page 4: Git em ambiente Subversion

Porque Git?

• Orinalmente foi escrito por Linus Torvalds;

• Usado no código-fonte do Kernel do Linux;

Page 5: Git em ambiente Subversion

Porque Git?

• Orinalmente foi escrito por Linus Torvalds;

• Usado no código-fonte do Kernel do Linux;

• Trabalha com ambiente distribuído;

Page 6: Git em ambiente Subversion

Porque Git?

• Orinalmente foi escrito por Linus Torvalds;

• Usado no código-fonte do Kernel do Linux;

• Trabalha com ambiente distribuído;

• Criar branchs e fazer merges são praticamente de graça;

Page 7: Git em ambiente Subversion

Porque Git?

• Orinalmente foi escrito por Linus Torvalds;

• Usado no código-fonte do Kernel do Linux;

• Trabalha com ambiente distribuído;

• Criar branchs e fazer merges são praticamente de graça;

• Commits são off-line;

Page 8: Git em ambiente Subversion

Porque Git?

Page 9: Git em ambiente Subversion

Porque Git?

• É rápido (logs, history, diff);

Page 10: Git em ambiente Subversion

Porque Git?

• É rápido (logs, history, diff);

• Mantém seus diretórios limpos;

Page 11: Git em ambiente Subversion

Porque Git?

• É rápido (logs, history, diff);

• Mantém seus diretórios limpos;

• Funciona por conteúdo e não por arquivos;

Page 12: Git em ambiente Subversion

Porque Git?

• É rápido (logs, history, diff);

• Mantém seus diretórios limpos;

• Funciona por conteúdo e não por arquivos;

• Comunidade ativa!

Page 13: Git em ambiente Subversion

Antes de Começar

Page 14: Git em ambiente Subversion

Antes de Começar

• Configuração globais (~/.gitconfig)

• Setar informações pessoais: nome, email

• Pode-se configurar alias para obter comandos iguais ao do Subversion

Page 15: Git em ambiente Subversion

~/.gitconfig

Page 16: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Page 17: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1

Page 18: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1

Revisão: 1

Page 19: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1

Revisão: 2

Revisão: 2

Page 20: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2

Revisão: 2

Revisão: 2

Page 21: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2

Revisão: 2

Revisão: 2 Revisão: 2

Page 22: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2

Revisão: 2

Revisão: 3

Revisão: 3

Page 23: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

Revisão: 2

Revisão: 3

Revisão: 3

Page 24: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

Revisão: 2

Revisão: 3

Revisão: 3 Revisão: 3

Page 25: Git em ambiente Subversion

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

Revisão: 2 Revisão: 3 Revisão: 4

Revisão: 4

Page 26: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Page 27: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1

Page 28: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1

master

master

Page 29: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master

Page 30: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master

Page 31: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2

commit d25f5d83c193d3f079b0c8ee27ab869da058483b commit d25f5d83c193d3f079b0c8ee27ab869da058483b

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master master

Page 32: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master master

commit e823f30f082d3fdecb13f2177736242b80b39e96

commit e823f30f082d3fdecb13f2177736242b80b39e96

Page 33: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master master

commit e823f30f082d3fdecb13f2177736242b80b39e96

commit e823f30f082d3fdecb13f2177736242b80b39e96

Page 34: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

commit d25f5d83c193d3f079b0c8ee27ab869da058483b commit e823f30f082d3fdecb13f2177736242b80b39e96

master

master master master

commit e823f30f082d3fdecb13f2177736242b80b39e96

commit e823f30f082d3fdecb13f2177736242b80b39e96

Page 35: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master master master

commit e823f30f082d3fdecb13f2177736242b80b39e96

commit 3ae6894ec28bfa193b952f929364b0cf67a64749

commit 3ae6894ec28bfa193b952f929364b0cf67a64749

Page 36: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

master

master master master

commit e823f30f082d3fdecb13f2177736242b80b39e96

commit 3ae6894ec28bfa193b952f929364b0cf67a64749

commit 3ae6894ec28bfa193b952f929364b0cf67a64749commit ef6062e6780ed36ad3057ce7b580c2bbfbb89bbd

Page 37: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

master

master master master

commit e823f30f082d3fdecb13f2177736242b80b39e96

commit 3ae6894ec28bfa193b952f929364b0cf67a64749

commit 3ae6894ec28bfa193b952f929364b0cf67a64749commit ef6062e6780ed36ad3057ce7b580c2bbfbb89bbd

Page 38: Git em ambiente Subversion

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

master

master master

commit 3ae6894ec28bfa193b952f929364b0cf67a64749

commit 3ae6894ec28bfa193b952f929364b0cf67a64749commit ef6062e6780ed36ad3057ce7b580c2bbfbb89bbd

dev1

commit ef6062e6780ed36ad3057ce7b580c2bbfbb89bbd

Page 39: Git em ambiente Subversion

Git Directory

Page 40: Git em ambiente Subversion

Git Directory

Page 41: Git em ambiente Subversion

Git Directory

Nós temos apenas um diretório .git!!!

Page 42: Git em ambiente Subversion

Criando um repositório com Git

Page 43: Git em ambiente Subversion

Clonando repositórios com Git

Page 44: Git em ambiente Subversion

git status

Page 45: Git em ambiente Subversion

git status

• Arquivos fora do controle de versão:

• Novos arquivos

Page 46: Git em ambiente Subversion

git status

• Arquivos fora do controle de versão:

• Novos arquivos

• Arquivos modificados mas não atualizados:

• Arquivos locais alterados, mas fora do índice

Page 47: Git em ambiente Subversion

git status

• Arquivos fora do controle de versão:

• Novos arquivos

• Arquivos modificados mas não atualizados:

• Arquivos locais alterados, mas fora do índice

• Alteração que serão enviadas

• O Índice

Page 48: Git em ambiente Subversion

git status

Page 49: Git em ambiente Subversion

O Índice

Page 50: Git em ambiente Subversion

O Índice

• Ponto de partida para seu próximo commit

Page 51: Git em ambiente Subversion

O Índice

• Ponto de partida para seu próximo commit

• Lista de arquivos semelhantes ao mancados como A, M, D na saída de svn status

Page 52: Git em ambiente Subversion

Principal diferença

• Após efetuar qualquer mudança no diretório de trabalho e antes de executar qualquer commit, você deve usar o comando add para adicionar qualquer arquivo novo ou modificado para o índice

Page 53: Git em ambiente Subversion

Exemplo

Page 54: Git em ambiente Subversion

Committing• git commit (git ci)

• Comita o que estiver no índice

• git commit -a (git ci -a)

• adiciona os arquivos alterados para o índice e faz o commit, mas ignora os arquivos não versionados

• Idêntico ao Subversion

Page 55: Git em ambiente Subversion

Desfazendo Mudanças

$ git checkout PATH $ svn revert PATH

Page 56: Git em ambiente Subversion

git revert != svn revert

# mais parecido com svn revert$ git checkout .

# reverte o commit <rev> e comita o resultado$ git revert <rev>

Page 57: Git em ambiente Subversion

Criando branch

Page 58: Git em ambiente Subversion

Criando branch

Tudo em apenas um comando!

Page 59: Git em ambiente Subversion

Merges

Page 60: Git em ambiente Subversion

Merges# voltando para o branch master$ git co master

Page 61: Git em ambiente Subversion

Merges# voltando para o branch master$ git co master

# juntando as mudanças de outro branch$ git merge {outro-branch}

Page 62: Git em ambiente Subversion

Merges# voltando para o branch master$ git co master

# juntando as mudanças de outro branch$ git merge {outro-branch}

# apagando o branch usadogit br -d {outro-branch}

Page 63: Git em ambiente Subversion

Resolvendo conflitos

Page 64: Git em ambiente Subversion

Resolvendo conflitos$ git merge {branch-conflitante}Auto-merged READMECONFLICT (content): Merge conflict in READMEAutomatic merge failed; fix conflicts and then commit the result

Page 65: Git em ambiente Subversion

Resolvendo conflitos$ git merge {branch-conflitante}Auto-merged READMECONFLICT (content): Merge conflict in READMEAutomatic merge failed; fix conflicts and then commit the result

# corrigindo o conflito e comitando

Page 66: Git em ambiente Subversion

Resolvendo conflitos$ git merge {branch-conflitante}Auto-merged READMECONFLICT (content): Merge conflict in READMEAutomatic merge failed; fix conflicts and then commit the result

# corrigindo o conflito e comitando$ vim README

Page 67: Git em ambiente Subversion

Resolvendo conflitos$ git merge {branch-conflitante}Auto-merged READMECONFLICT (content): Merge conflict in READMEAutomatic merge failed; fix conflicts and then commit the result

# corrigindo o conflito e comitando$ vim README$ git add README

Page 68: Git em ambiente Subversion

Resolvendo conflitos$ git merge {branch-conflitante}Auto-merged READMECONFLICT (content): Merge conflict in READMEAutomatic merge failed; fix conflicts and then commit the result

# corrigindo o conflito e comitando$ vim README$ git add README$ git ci -m “corrigi o conflito com o branch {branch-conflitante}”

Page 69: Git em ambiente Subversion

Curiosidades sobre Git

Page 70: Git em ambiente Subversion

Curiosidades sobre Git

• Para remover arquivos e diretórios:

git rm {file-name}

git rm -rf {file-name}

Page 71: Git em ambiente Subversion

Curiosidades sobre Git

• Para remover arquivos e diretórios:

git rm {file-name}

git rm -rf {file-name}

• Para renomear arquivos:

git mv {file-name} {new-file-name}

Page 72: Git em ambiente Subversion

Curiosidades sobre Git

Page 73: Git em ambiente Subversion

Curiosidades sobre Git

Se seus diretórios estão vazios, Git não está nem aí para eles!

Page 74: Git em ambiente Subversion

Dúvidas?