SlideShare uma empresa Scribd logo
1 de 17
Controle de Versão com
the Global Information Tracker
GIT
Controle de Versão
O controle de versão é um sistema que
registra as alterações realizadas em um
arquivo ou conjunto de arquivos ao longo
do tempo.
Sistemas de Controle de Versão local
● Copiar os arquivos para outro diretório local.
● É fácil esquecer que você está no diretório e,
acidentalmente, sobreescreve para o arquivo errado
ou copiar arquivos quando você não quis. Para lidar
com este problema, há muito tempo os programadores
desenvolveram VCSs (Version Control System's) locais que
tiveram um simples banco de dados que guarda todas
as alterações em arquivos sob controle de revisão.
Sistemas de Controle de Versão local
Sistemas de Controle de Versão centralizados
Um único servidor que contém todos os arquivos versionados.
Pode oferecer algumas vantagens:
● Todo mundo sabe até certo ponto o que todos fazem no projeto.
● Os administradores têm um controle maior sobre quem pode fazer o que no
projeto.
No entanto, esta configuração também tem algumas desvantagens:
● Se este servidor cair por uma hora, ninguém pode colaborar ou salvar as
alterações versionadas durante esse período.
● Se o servidor corromper seu HD e não houverem backups, absolutamente
tudo será perdido inclusive todo o histórico do projeto exceto nas máquinas
locais.
Sistemas de Controle de Versão centralizados
Sistemas de controle de versão distribuído
● Os clientes são idênticos no repositório.
● Assim, se qualquer servidor morrer, qualquer um dos
repositórios de clientes podem ser copiados de volta para o
servidor para restaurá-lo.
● Cada check-out é um backup completo de todos os dados.
● Além disso, é possível trabalhar com vários repositórios
remotos, de modo que você pode colaborar com diferentes
grupos de pessoas de maneiras diferentes ao mesmo tempo
dentro do mesmo projeto.
● Isto permite-lhe configurar vários tipos de fluxos de trabalho
que não são possíveis em sistemas centralizados, como
modelos hierárquicos.
Sistemas de controle de versão distribuído
● Sistema de controle de versão ditribuído.
○ Consulta toda a história do projeto desde o primeiro commit
○ Obter versões mais antigas do projeto
● Open Source
● Multiplataforma
● Rápido e eficiente
● Comessou a ser desenvolvido em 2005 por Linux Torvalds para controle de versão do Kernel do linux.
○ O sistema de versionamento inicial que antes era gratuíto passou a ser cobrado, daí surgiu a
necessidade de se desenvolver um sistema de versionamento.
● Pela linha de comando a produtividade pode ser maior, mas há opções de ferramentas gráficas:
○ RabbitVCS Git
○ Meld
○ Em IDE's como o netbeans
Git
http://git-scm.com/
Linux
○ Git (MSysGit)
○ TortoiseGit
○ ??????
Windows
Mac
Fluxo de trabalho
Seus repositórios locais consitem em três "árvores" mantidas pelo git. a primeira
delas é sua Working Directory que contém os arquivos vigentes. A segunda Index
que funciona como uma área temporária e finalmente a Head que apontam para a
última confirmação que você fez.
Branches (Ramos)
Branches são utilizados para desenvolver funcionalidades isoladas umas das
outras. O ramo master é o ramo padrão quando se criar um novo repositório.
Pode-se usar outros ramos para desenvolver e mesclá-los ao master após a
conclusão.
Branches (Ramos)
Há a possibilidade de se desenvolver branches locais e trabalhar neles de acordo
com as suas necessidades.
Criando um novo branch:
retornando para o branch master:
removendo um branch:
Um branch não está disponível a outros a menos que o envie para o repositório
remoto:
$ git checkout -b nome-do-branch
$ git checkout master
$ git branch -d nome-do-branch
$ git push origin <branch>
Sobrescrever alterações locais
Tags (Rótulos)
É recomendado criar rótulos para releases de software, pelo git é possível através
do comando: $ git tag 1.0.0
Com o comando: $ git checkout --<nome arquivo> é possivel sobrescrever as
alterações locais. Dessa forma, será substituído as alterações na árvore de trabalho
com o conteúdo mais recente no Head. Alterações adicionadas no index, bem como
novos arquivos serão mantidos.
Remover todas as alterações locais e recuperar o histórico mais recente do servidor
é possível atráves dos comandos:
$ git fetch origin
$ git reset --hard origin/master
Comandos Básicos
1. init
○ Cria um novo repositório do git
2. clone
○ Cria uma cópia de trabalho em um repositório local
○ Se você não clonou um repositório existente e deseja conectá-lo a um servidor remoto o
comando será git remote add origin <servidor>. Agora você será capaz de enviar suas
alterações para o servidor remoto.
3. add
○ Adiciona o que fará parte do próximo commit
4. commit [-m "Mensagem obrigatório"]
○ Envia os arquivos adicionados para o Head, mas ainda não para o repositório remoto
5. push
○ Suas alterações agora estão no Head da sua cópia de trabalho local, após realizado o commit. O
comando push serve para enviá-las para o repositório remoto, o comando completo é $ git push
origin master. "master" pode ser substituída para qualquer ramificação desejada.
6. pull
○ Atualizar o repositório local.
7. merge <branch>
○ Mesclar alterações remotas, um outro ramo ao seu ramo ativo. O git tenta auto-mesclar as
alterações. Infelizmente, isso nem sempre é possível e resulta em conflitos. Os Conflitos devem
ser editados manualmente, depois de alterados é necessário marcá-los como mesclados $ git
add <arquivo>. Há a possibilidade de pré-visualizar os arquivos usando $ git diff <ramo
origem> <ramo destino>
Git Hub / Bitbucket
https://www.github.com/ | https://www.bitbucket.org
● Git Hub != Git
○ Git hub é um serviço público ou privado, gratuíto ou pago, que permite armazenar repositórios via
internet e utiliza o git como sistema de versionamento.
● Bitbucket
○ Serviço gratuíto que permite armazenar repositórios privados via internet.
O que é?
É um sistema de controle de versão distribuído.
Quando aplicar?
Em projetos, de grande ou pequeno porte, open source ou não, em que os arquivos
necessitam de controle de versão.
Como utilizar?
Basicamente conforme demonstrado na apresentação.
Recapitulando...
Bibliografia
1. Pro Git : Everything you need to know about the git distributed source control toll - Scott Chacon -
Appress
2. Version Control With Git - Jon Loelinger - O'Reilly
3. Controlo de Versões Distribuído com Git - http://www.slideshare.net/NetPonto/controlo-de-versao-
distribuido-com-git - Caio Proiete
4. git guia prático - http://rogerdudler.github.com/git-guide/index.pt_BR.html - Roger Dudler

Mais conteúdo relacionado

Mais procurados

Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoFelipe
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilTiago Antônio da Silva
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Victor Souza
 
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowControle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowLucas Araújo Mezêncio
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesLeandro Cavalcante
 
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...Tchelinux
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta gitDiogo Souza Machado
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVNLuciano Lima
 
Aula 3 - Curso Git e Github - Webschool
Aula 3 - Curso Git e Github - WebschoolAula 3 - Curso Git e Github - Webschool
Aula 3 - Curso Git e Github - WebschoolBruno Orlandi
 
Github para colaboradores livres
Github para colaboradores livresGithub para colaboradores livres
Github para colaboradores livresThiago Sciotta
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao GitOto Junior
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantesPaula Santana
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errarBruno Calheira
 
Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonAlysson Ajackson
 

Mais procurados (20)

Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código Fácil
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016
 
Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
 
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowControle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de Versões
 
Git+github
Git+githubGit+github
Git+github
 
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
Inovações no mundo das distribuições Linux - Victor Hugo Aguiar Pacce - Tchel...
 
Git e github
Git e githubGit e github
Git e github
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVN
 
Aula 3 - Curso Git e Github - Webschool
Aula 3 - Curso Git e Github - WebschoolAula 3 - Curso Git e Github - Webschool
Aula 3 - Curso Git e Github - Webschool
 
Github para colaboradores livres
Github para colaboradores livresGithub para colaboradores livres
Github para colaboradores livres
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantes
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson Ajackson
 
Git Básico
Git BásicoGit Básico
Git Básico
 
Git
GitGit
Git
 

Semelhante a Controle de Versão Distribuído com Git básico

Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
Learn about Git - Git Tutorial
Learn about Git - Git TutorialLearn about Git - Git Tutorial
Learn about Git - Git TutorialLucas Brigida
 
Git controlo de_versoes
Git controlo de_versoesGit controlo de_versoes
Git controlo de_versoesRicardo Soares
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfAuriceliaRosa
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Tchelinux
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.Rafael Ivan
 
SVN - Subversion: Guia de sobrevivência do usuário
SVN - Subversion: Guia de sobrevivência  do usuárioSVN - Subversion: Guia de sobrevivência  do usuário
SVN - Subversion: Guia de sobrevivência do usuárioFabrício Campos
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 

Semelhante a Controle de Versão Distribuído com Git básico (20)

Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Introducao ao Git
Introducao ao GitIntroducao ao Git
Introducao ao Git
 
Git
GitGit
Git
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Git
GitGit
Git
 
Learn about Git - Git Tutorial
Learn about Git - Git TutorialLearn about Git - Git Tutorial
Learn about Git - Git Tutorial
 
Git 101
Git 101Git 101
Git 101
 
Git controlo de_versoes
Git controlo de_versoesGit controlo de_versoes
Git controlo de_versoes
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Curso git-0001
Curso git-0001Curso git-0001
Curso git-0001
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdf
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Ferramentas para versionamento Utilizando git
Ferramentas para versionamento Utilizando gitFerramentas para versionamento Utilizando git
Ferramentas para versionamento Utilizando git
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.
 
Git ao GitHub
Git ao GitHubGit ao GitHub
Git ao GitHub
 
SVN - Subversion: Guia de sobrevivência do usuário
SVN - Subversion: Guia de sobrevivência  do usuárioSVN - Subversion: Guia de sobrevivência  do usuário
SVN - Subversion: Guia de sobrevivência do usuário
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 

Controle de Versão Distribuído com Git básico

  • 1. Controle de Versão com the Global Information Tracker GIT
  • 2. Controle de Versão O controle de versão é um sistema que registra as alterações realizadas em um arquivo ou conjunto de arquivos ao longo do tempo.
  • 3. Sistemas de Controle de Versão local ● Copiar os arquivos para outro diretório local. ● É fácil esquecer que você está no diretório e, acidentalmente, sobreescreve para o arquivo errado ou copiar arquivos quando você não quis. Para lidar com este problema, há muito tempo os programadores desenvolveram VCSs (Version Control System's) locais que tiveram um simples banco de dados que guarda todas as alterações em arquivos sob controle de revisão.
  • 4. Sistemas de Controle de Versão local
  • 5. Sistemas de Controle de Versão centralizados Um único servidor que contém todos os arquivos versionados. Pode oferecer algumas vantagens: ● Todo mundo sabe até certo ponto o que todos fazem no projeto. ● Os administradores têm um controle maior sobre quem pode fazer o que no projeto. No entanto, esta configuração também tem algumas desvantagens: ● Se este servidor cair por uma hora, ninguém pode colaborar ou salvar as alterações versionadas durante esse período. ● Se o servidor corromper seu HD e não houverem backups, absolutamente tudo será perdido inclusive todo o histórico do projeto exceto nas máquinas locais.
  • 6. Sistemas de Controle de Versão centralizados
  • 7. Sistemas de controle de versão distribuído ● Os clientes são idênticos no repositório. ● Assim, se qualquer servidor morrer, qualquer um dos repositórios de clientes podem ser copiados de volta para o servidor para restaurá-lo. ● Cada check-out é um backup completo de todos os dados. ● Além disso, é possível trabalhar com vários repositórios remotos, de modo que você pode colaborar com diferentes grupos de pessoas de maneiras diferentes ao mesmo tempo dentro do mesmo projeto. ● Isto permite-lhe configurar vários tipos de fluxos de trabalho que não são possíveis em sistemas centralizados, como modelos hierárquicos.
  • 8. Sistemas de controle de versão distribuído
  • 9. ● Sistema de controle de versão ditribuído. ○ Consulta toda a história do projeto desde o primeiro commit ○ Obter versões mais antigas do projeto ● Open Source ● Multiplataforma ● Rápido e eficiente ● Comessou a ser desenvolvido em 2005 por Linux Torvalds para controle de versão do Kernel do linux. ○ O sistema de versionamento inicial que antes era gratuíto passou a ser cobrado, daí surgiu a necessidade de se desenvolver um sistema de versionamento. ● Pela linha de comando a produtividade pode ser maior, mas há opções de ferramentas gráficas: ○ RabbitVCS Git ○ Meld ○ Em IDE's como o netbeans Git http://git-scm.com/ Linux ○ Git (MSysGit) ○ TortoiseGit ○ ?????? Windows Mac
  • 10. Fluxo de trabalho Seus repositórios locais consitem em três "árvores" mantidas pelo git. a primeira delas é sua Working Directory que contém os arquivos vigentes. A segunda Index que funciona como uma área temporária e finalmente a Head que apontam para a última confirmação que você fez.
  • 11. Branches (Ramos) Branches são utilizados para desenvolver funcionalidades isoladas umas das outras. O ramo master é o ramo padrão quando se criar um novo repositório. Pode-se usar outros ramos para desenvolver e mesclá-los ao master após a conclusão.
  • 12. Branches (Ramos) Há a possibilidade de se desenvolver branches locais e trabalhar neles de acordo com as suas necessidades. Criando um novo branch: retornando para o branch master: removendo um branch: Um branch não está disponível a outros a menos que o envie para o repositório remoto: $ git checkout -b nome-do-branch $ git checkout master $ git branch -d nome-do-branch $ git push origin <branch>
  • 13. Sobrescrever alterações locais Tags (Rótulos) É recomendado criar rótulos para releases de software, pelo git é possível através do comando: $ git tag 1.0.0 Com o comando: $ git checkout --<nome arquivo> é possivel sobrescrever as alterações locais. Dessa forma, será substituído as alterações na árvore de trabalho com o conteúdo mais recente no Head. Alterações adicionadas no index, bem como novos arquivos serão mantidos. Remover todas as alterações locais e recuperar o histórico mais recente do servidor é possível atráves dos comandos: $ git fetch origin $ git reset --hard origin/master
  • 14. Comandos Básicos 1. init ○ Cria um novo repositório do git 2. clone ○ Cria uma cópia de trabalho em um repositório local ○ Se você não clonou um repositório existente e deseja conectá-lo a um servidor remoto o comando será git remote add origin <servidor>. Agora você será capaz de enviar suas alterações para o servidor remoto. 3. add ○ Adiciona o que fará parte do próximo commit 4. commit [-m "Mensagem obrigatório"] ○ Envia os arquivos adicionados para o Head, mas ainda não para o repositório remoto 5. push ○ Suas alterações agora estão no Head da sua cópia de trabalho local, após realizado o commit. O comando push serve para enviá-las para o repositório remoto, o comando completo é $ git push origin master. "master" pode ser substituída para qualquer ramificação desejada. 6. pull ○ Atualizar o repositório local. 7. merge <branch> ○ Mesclar alterações remotas, um outro ramo ao seu ramo ativo. O git tenta auto-mesclar as alterações. Infelizmente, isso nem sempre é possível e resulta em conflitos. Os Conflitos devem ser editados manualmente, depois de alterados é necessário marcá-los como mesclados $ git add <arquivo>. Há a possibilidade de pré-visualizar os arquivos usando $ git diff <ramo origem> <ramo destino>
  • 15. Git Hub / Bitbucket https://www.github.com/ | https://www.bitbucket.org ● Git Hub != Git ○ Git hub é um serviço público ou privado, gratuíto ou pago, que permite armazenar repositórios via internet e utiliza o git como sistema de versionamento. ● Bitbucket ○ Serviço gratuíto que permite armazenar repositórios privados via internet.
  • 16. O que é? É um sistema de controle de versão distribuído. Quando aplicar? Em projetos, de grande ou pequeno porte, open source ou não, em que os arquivos necessitam de controle de versão. Como utilizar? Basicamente conforme demonstrado na apresentação. Recapitulando...
  • 17. Bibliografia 1. Pro Git : Everything you need to know about the git distributed source control toll - Scott Chacon - Appress 2. Version Control With Git - Jon Loelinger - O'Reilly 3. Controlo de Versões Distribuído com Git - http://www.slideshare.net/NetPonto/controlo-de-versao- distribuido-com-git - Caio Proiete 4. git guia prático - http://rogerdudler.github.com/git-guide/index.pt_BR.html - Roger Dudler