git em ambiente subversion

Post on 05-Jul-2015

1.403 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Visão Geral do GitAplicando Git em ambiente Subversion

Porque Git?

Porque Git?

• Orinalmente foi escrito por Linus Torvalds;

Porque Git?

• Orinalmente foi escrito por Linus Torvalds;

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

Porque Git?

• Orinalmente foi escrito por Linus Torvalds;

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

• Trabalha com ambiente distribuído;

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;

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;

Porque Git?

Porque Git?

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

Porque Git?

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

• Mantém seus diretórios limpos;

Porque Git?

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

• Mantém seus diretórios limpos;

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

Porque Git?

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

• Mantém seus diretórios limpos;

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

• Comunidade ativa!

Antes de Começar

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

~/.gitconfig

O Modelo Subversion:Centralizado

Repositório SVN

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1

Revisão: 1

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1

Revisão: 2

Revisão: 2

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2

Revisão: 2

Revisão: 2

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2

Revisão: 2

Revisão: 2 Revisão: 2

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2

Revisão: 2

Revisão: 3

Revisão: 3

O Modelo Subversion:Centralizado

Repositório SVN

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

Revisão: 2

Revisão: 3

Revisão: 3

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

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

O Modelo Git:Distribuído

Repositório Git

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1

master

master

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2

commit d25f5d83c193d3f079b0c8ee27ab869da058483b commit d25f5d83c193d3f079b0c8ee27ab869da058483b

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master master

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master master

commit e823f30f082d3fdecb13f2177736242b80b39e96

commit e823f30f082d3fdecb13f2177736242b80b39e96

O Modelo Git:Distribuído

Repositório Git

Desenvolvedor 1 Desenvolvedor 2 Desenvolvedor 3

commit d25f5d83c193d3f079b0c8ee27ab869da058483b

master

master master

commit e823f30f082d3fdecb13f2177736242b80b39e96

commit e823f30f082d3fdecb13f2177736242b80b39e96

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

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

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

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

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

Git Directory

Git Directory

Git Directory

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

Criando um repositório com Git

Clonando repositórios com Git

git status

git status

• Arquivos fora do controle de versão:

• Novos arquivos

git status

• Arquivos fora do controle de versão:

• Novos arquivos

• Arquivos modificados mas não atualizados:

• Arquivos locais alterados, mas fora do índice

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

git status

O Índice

O Índice

• Ponto de partida para seu próximo commit

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

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

Exemplo

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

Desfazendo Mudanças

$ git checkout PATH $ svn revert PATH

git revert != svn revert

# mais parecido com svn revert$ git checkout .

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

Criando branch

Criando branch

Tudo em apenas um comando!

Merges

Merges# voltando para o branch master$ git co master

Merges# voltando para o branch master$ git co master

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

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}

Resolvendo conflitos

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

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

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

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

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}”

Curiosidades sobre Git

Curiosidades sobre Git

• Para remover arquivos e diretórios:

git rm {file-name}

git rm -rf {file-name}

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}

Curiosidades sobre Git

Curiosidades sobre Git

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

Dúvidas?

top related