Git em ambiente Subversion
-
Upload
willian-fernandes -
Category
Technology
-
view
1.406 -
download
0
description
Transcript of Git em ambiente Subversion
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?