SlideShare una empresa de Scribd logo
1 de 36
Introdução
Lab. São Tomé
Maio/2014
Oto Junior (otojunior@gmail.com)
VCS Centralizado
VCS Centralizado
● Desvantagens:
○ Servidor central: ponto único de falha
○ Servidor fora do ar: ninguém trabalha!
○ Falha no HD do servidor: + problemas!
○ Qualquer operação (mesmo uma
simples requisição ao histórico) exige
comunicação de rede com servidor. +
Lento.
VCS Centralizado
● Característica de armazenamento:
○ Baseado em diferenças
VCS Distribuído
VCS Distribuído
● Vantagens:
○ Cada cliente tem uma cópia completa
do repositório (clone) com logs e
histórico.
○ Forma uma espécia de rede P2P, menos
suscetível a falhas.
○ Operações são feitas localmente para
só depois serem publicadas. Muito
rápido!
○ Trabalho em conjunto com grupos
diferentes de pessoas.
VCS Distribuído
● Característica de armazenamento:
○ Baseado em snapshots, não diferenças!
Git
● Configuração Inicial:
○ Definir sua identidade:
$> git config --global user.name “José da Silva”
$> git config --global user.email “jose@empresa.com”
○ Obtendo um repositrio:
$> git clone <url do repositório>
Git
● Gravando alterações:
○ Adicionar:
$> git add <arquivo>
○ O comando git add adiciona um arquivo ao
repositório git, isto é, o arquivo adicionado passa
a ser versionado.
○ É utilizado também para indicar que um arquivo
modificado deve ser gravado no próximo commit
Git
● Gravando alterações:
○ Remover:
$> git rm <arquivo>
○ O comando git rm remove um arquivo do
repositório git, isto é, o arquivo removido é
apagado do workspace e não será mais
versionado.
○ (Obs: a exclusão no repositório será persistida no
próximo commit)
Git
● Gravando alterações:
○ Renomear/Mover:
$> git mv <arquivo> <destino>
○ O comando git mv renomeia ou move um arquivo
de um diretório (pasta) para outro.
○ (Obs: assim como no comando git rm, a operação
ficará pendente de um próximo commit para que
seja persistido no repositório)
Git
● Gravando alterações:
○ Commitar:
$> git commit -am “Mensagem”
○ O comando git commit persiste as mudanças do
workspace no repositório, gerando um novo
snapshot.
○ Antes de executar o comando, podemos verificar
quais alterações irão compôr o snapshot através
do comando: $> git status
Git
● git commit:
Estado anterior:
Novo estado (após commit):
C1 C2
C1 C2 C3
Novo snapshot (C3) criado!
Git
● Verificando histórico:
$> git log -n <quantidade de entradas>
● Ferramenta gráfica: gitk
Git
● Revertendo alterações:
$> git reset <tag | branch | commit>
O comando git reset volta seu workspace para
determinada tag, branch ou commit específico.
C1 C2 C3 Estado atual
C1 C2 C3 Após git reset C2
Git
● Branches
○ Lembre-se: o Git não armazena os dados como
uma séria de mudanças ou deltas, mas sim como
uma série de snapshots.
Criar branch:
$> git branch <nome do branch>
branch
Git
● Branches
Merge de branch:
$> git merge <nome do branch>
○ Comando usado para reintegrar branches ou
atualizar o workspace (se usado no mesmo
branch em que o workspace está - neste caso,
similar ao update do SVN)
merge de branch
Git
● Branches
Mudar o workspace para outro branch:
$> git checkout <nome do branch>
Antes do checkout:
workspace está aqui.
Após checkout:
workspace fica aqui.
Git
● Tags
○ Tag nada mais é do que um “ponteiro” para um
commit (snapshot). É utilizado somente para
delimitar um ponto na linha do tempo.
Criar tag:
$> git tag <nome da tag> <commit>
Git
● Nós Remotos:
○ Como já foi dito, o git não trabalha na
estrutura cliente-servidor.
○ Também foi dito que as operações
são executadas localmente.
Então como compartilhar seu código
com o resto da equipe?
Git
● Nós Remotos:
○ Como cada nó tem uma cópia inteira
do repositório, é eleito um nó na rede
para ser o compartilhador.
○ O nome padrão deste nó no Git
chama-se “origin” (pode ser
renomeado).
Git
Git
● Nós Remotos:
○ O desenvolvedor deve “publicar” seus commits
no nó origin para que fique disponível para os
outros desenvolvedores através do comando:
$> git push origin <branch>
ou
$> git push origin --all
Obs: O comando acima publica todos os branchs do desenvolvedor.
Git
● Nós Remotos:
○ ATENÇÃO: O push NÃO é
equivalente a um commit do SVN.
○ O push ESPELHA a sua árvore de
commits no nó origin. Ou seja, se o
desenvolvedor commitou errado, vai
errado para o origin.
Git
JAMAIS FAÇA:
git push --force
Este comando sobrescreve a árvore
do origin permanentemente
“sumindo” com os commits dos
outros desenvolvedores de forma
irreversível!
Git
Git
● Nós Remotos:
○ O processo inverso (obtenção dos
commits dos outros
desenvolvedores) é através do
comando fetch:
$> git fetch origin --all
Git
● Nós Remotos:
○ ATENÇÃO NOVAMENTE: o comando fetch
NÃO é equivalente ao update do SVN.
○ O comando fetch ESPELHA de volta a árvore
do origin no seu nó. Não muda seu
workspace.
○ Uma vez sincronizado com o origin, deve-se
fazer o processo de merge normalmente.
(Neste ponto agora, é como se fosse o update
do SVN).
Git
● Nós Remotos:
○ Com o uso do plugin EGit para o
Eclipse, a operação fetch é feita
automaticamente em background ao
executar um synchronize.
Git
● Nós Remotos:
○ Através do comando clone já mencionado
anteriormente para se obter uma cópia de um
repositório, automaticamente o Git já associa a
sua árvore com o nó origin (url do comando
clone).
○ Existe um comando que faz um fetch seguido de
um merge (fetch+merge) de um determinado
ramo. Assemelha-se a um update do SVN:
$> git pull origin <branch>
Git - Aspectos Intermediários
● A área de “stage” ou “index”:
○ Entre seu workspace e o commit,
temos uma área intermediária
chamada “stage area” ou “index”.
○ Esta área é a indicação de qual
artefato vai para o commit (o que vai
ser composto no snapshot).
Git - Aspectos Intermediários
Git - Aspectos Intermediários
● A área de “stage” ou “index”:
○ Esta área, apesar de ser útil em alguns
casos, é perfeitamente possível
trabalhar sem preocupar-mos com ela,
se considerarmos que queremos que o
commit seja composto de todos os
arquivos modificados. (ou seja, mais
parecido com o comportamento do
SVN).
Git - Aspectos Intermediários
Git
Git
● Tutorias e exercícios:
○ Recomendado: Seção 1 e 2
http://pcottle.github.io/learnGitBranchin
g
● Referência:
http://git-scm.com/book/pt-br
FIM

Más contenido relacionado

La actualidad más candente

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
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAArmando Couto
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteWaldyr Felix
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º diaArmando Couto
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHubWagner
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Mauro George
 
Git workshop
Git workshopGit workshop
Git workshopYuri Reis
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.Rafael Ivan
 
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
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetesRicardo Katz
 

La actualidad más candente (20)

Git v2
Git v2Git v2
Git v2
 
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
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIA
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Git
GitGit
Git
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHub
 
Git+github
Git+githubGit+github
Git+github
 
Oficina de Git EEDACT2015
Oficina de Git EEDACT2015Oficina de Git EEDACT2015
Oficina de Git EEDACT2015
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
 
Controle de versão com e git
Controle de versão com e gitControle de versão com e git
Controle de versão com e git
 
Git workshop
Git workshopGit workshop
Git workshop
 
Git 101
Git 101Git 101
Git 101
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.
 
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
 
Estendendo o kubernetes
Estendendo o kubernetesEstendendo o kubernetes
Estendendo o kubernetes
 

Destacado

Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na sambajoaogmaciel
 
Cultura da Convergencia - Henry Jenkins
Cultura da Convergencia - Henry JenkinsCultura da Convergencia - Henry Jenkins
Cultura da Convergencia - Henry JenkinsClaudia Alexandra
 
Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014Rodrigo Moyle
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsFelipe Santos
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Leonardo Kobus
 

Destacado (6)

Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na samba
 
Cultura da Convergencia - Henry Jenkins
Cultura da Convergencia - Henry JenkinsCultura da Convergencia - Henry Jenkins
Cultura da Convergencia - Henry Jenkins
 
Controle de versão com GIT
Controle de versão com GITControle de versão com GIT
Controle de versão com GIT
 
Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014Jenkins + DCS / Dafiti Conference 2014
Jenkins + DCS / Dafiti Conference 2014
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com Jenkins
 
Jenkins integrando e estendendo.
Jenkins integrando e estendendo.Jenkins integrando e estendendo.
Jenkins integrando e estendendo.
 

Similar a Introdução ao Git

Similar a Introdução ao Git (20)

Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Git
GitGit
Git
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Git
GitGit
Git
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
GIT - Hands-On
GIT - Hands-On GIT - Hands-On
GIT - Hands-On
 
Ferramenta git
Ferramenta gitFerramenta git
Ferramenta git
 
Git + git hub
Git + git hubGit + git hub
Git + git hub
 
Git
GitGit
Git
 
Github para colaboradores livres
Github para colaboradores livresGithub para colaboradores livres
Github para colaboradores livres
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
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
 
Curso git-0001
Curso git-0001Curso git-0001
Curso git-0001
 
Git controlo de_versoes
Git controlo de_versoesGit controlo de_versoes
Git controlo de_versoes
 

Introdução ao Git

  • 1. Introdução Lab. São Tomé Maio/2014 Oto Junior (otojunior@gmail.com)
  • 3. VCS Centralizado ● Desvantagens: ○ Servidor central: ponto único de falha ○ Servidor fora do ar: ninguém trabalha! ○ Falha no HD do servidor: + problemas! ○ Qualquer operação (mesmo uma simples requisição ao histórico) exige comunicação de rede com servidor. + Lento.
  • 4. VCS Centralizado ● Característica de armazenamento: ○ Baseado em diferenças
  • 6. VCS Distribuído ● Vantagens: ○ Cada cliente tem uma cópia completa do repositório (clone) com logs e histórico. ○ Forma uma espécia de rede P2P, menos suscetível a falhas. ○ Operações são feitas localmente para só depois serem publicadas. Muito rápido! ○ Trabalho em conjunto com grupos diferentes de pessoas.
  • 7. VCS Distribuído ● Característica de armazenamento: ○ Baseado em snapshots, não diferenças!
  • 8. Git ● Configuração Inicial: ○ Definir sua identidade: $> git config --global user.name “José da Silva” $> git config --global user.email “jose@empresa.com” ○ Obtendo um repositrio: $> git clone <url do repositório>
  • 9. Git ● Gravando alterações: ○ Adicionar: $> git add <arquivo> ○ O comando git add adiciona um arquivo ao repositório git, isto é, o arquivo adicionado passa a ser versionado. ○ É utilizado também para indicar que um arquivo modificado deve ser gravado no próximo commit
  • 10. Git ● Gravando alterações: ○ Remover: $> git rm <arquivo> ○ O comando git rm remove um arquivo do repositório git, isto é, o arquivo removido é apagado do workspace e não será mais versionado. ○ (Obs: a exclusão no repositório será persistida no próximo commit)
  • 11. Git ● Gravando alterações: ○ Renomear/Mover: $> git mv <arquivo> <destino> ○ O comando git mv renomeia ou move um arquivo de um diretório (pasta) para outro. ○ (Obs: assim como no comando git rm, a operação ficará pendente de um próximo commit para que seja persistido no repositório)
  • 12. Git ● Gravando alterações: ○ Commitar: $> git commit -am “Mensagem” ○ O comando git commit persiste as mudanças do workspace no repositório, gerando um novo snapshot. ○ Antes de executar o comando, podemos verificar quais alterações irão compôr o snapshot através do comando: $> git status
  • 13. Git ● git commit: Estado anterior: Novo estado (após commit): C1 C2 C1 C2 C3 Novo snapshot (C3) criado!
  • 14. Git ● Verificando histórico: $> git log -n <quantidade de entradas> ● Ferramenta gráfica: gitk
  • 15. Git ● Revertendo alterações: $> git reset <tag | branch | commit> O comando git reset volta seu workspace para determinada tag, branch ou commit específico. C1 C2 C3 Estado atual C1 C2 C3 Após git reset C2
  • 16. Git ● Branches ○ Lembre-se: o Git não armazena os dados como uma séria de mudanças ou deltas, mas sim como uma série de snapshots. Criar branch: $> git branch <nome do branch> branch
  • 17. Git ● Branches Merge de branch: $> git merge <nome do branch> ○ Comando usado para reintegrar branches ou atualizar o workspace (se usado no mesmo branch em que o workspace está - neste caso, similar ao update do SVN) merge de branch
  • 18. Git ● Branches Mudar o workspace para outro branch: $> git checkout <nome do branch> Antes do checkout: workspace está aqui. Após checkout: workspace fica aqui.
  • 19. Git ● Tags ○ Tag nada mais é do que um “ponteiro” para um commit (snapshot). É utilizado somente para delimitar um ponto na linha do tempo. Criar tag: $> git tag <nome da tag> <commit>
  • 20. Git ● Nós Remotos: ○ Como já foi dito, o git não trabalha na estrutura cliente-servidor. ○ Também foi dito que as operações são executadas localmente. Então como compartilhar seu código com o resto da equipe?
  • 21. Git ● Nós Remotos: ○ Como cada nó tem uma cópia inteira do repositório, é eleito um nó na rede para ser o compartilhador. ○ O nome padrão deste nó no Git chama-se “origin” (pode ser renomeado).
  • 22. Git
  • 23. Git ● Nós Remotos: ○ O desenvolvedor deve “publicar” seus commits no nó origin para que fique disponível para os outros desenvolvedores através do comando: $> git push origin <branch> ou $> git push origin --all Obs: O comando acima publica todos os branchs do desenvolvedor.
  • 24. Git ● Nós Remotos: ○ ATENÇÃO: O push NÃO é equivalente a um commit do SVN. ○ O push ESPELHA a sua árvore de commits no nó origin. Ou seja, se o desenvolvedor commitou errado, vai errado para o origin.
  • 25. Git JAMAIS FAÇA: git push --force Este comando sobrescreve a árvore do origin permanentemente “sumindo” com os commits dos outros desenvolvedores de forma irreversível!
  • 26. Git
  • 27. Git ● Nós Remotos: ○ O processo inverso (obtenção dos commits dos outros desenvolvedores) é através do comando fetch: $> git fetch origin --all
  • 28. Git ● Nós Remotos: ○ ATENÇÃO NOVAMENTE: o comando fetch NÃO é equivalente ao update do SVN. ○ O comando fetch ESPELHA de volta a árvore do origin no seu nó. Não muda seu workspace. ○ Uma vez sincronizado com o origin, deve-se fazer o processo de merge normalmente. (Neste ponto agora, é como se fosse o update do SVN).
  • 29. Git ● Nós Remotos: ○ Com o uso do plugin EGit para o Eclipse, a operação fetch é feita automaticamente em background ao executar um synchronize.
  • 30. Git ● Nós Remotos: ○ Através do comando clone já mencionado anteriormente para se obter uma cópia de um repositório, automaticamente o Git já associa a sua árvore com o nó origin (url do comando clone). ○ Existe um comando que faz um fetch seguido de um merge (fetch+merge) de um determinado ramo. Assemelha-se a um update do SVN: $> git pull origin <branch>
  • 31. Git - Aspectos Intermediários ● A área de “stage” ou “index”: ○ Entre seu workspace e o commit, temos uma área intermediária chamada “stage area” ou “index”. ○ Esta área é a indicação de qual artefato vai para o commit (o que vai ser composto no snapshot).
  • 32. Git - Aspectos Intermediários
  • 33. Git - Aspectos Intermediários ● A área de “stage” ou “index”: ○ Esta área, apesar de ser útil em alguns casos, é perfeitamente possível trabalhar sem preocupar-mos com ela, se considerarmos que queremos que o commit seja composto de todos os arquivos modificados. (ou seja, mais parecido com o comportamento do SVN).
  • 34. Git - Aspectos Intermediários
  • 35. Git
  • 36. Git ● Tutorias e exercícios: ○ Recomendado: Seção 1 e 2 http://pcottle.github.io/learnGitBranchin g ● Referência: http://git-scm.com/book/pt-br FIM