SlideShare a Scribd company logo
1 of 40
Download to read offline
Controle de
Versões com   

                                
     Vagner Santana
    http://vagnersantana.com
Agenda
Introdução
Instalação
Configuração
Iniciando um projeto
Áreas do git
Commit
Gerenciamento de índice
Stash / Branch
Merge / Rebase
Repositórios remotos: Modelo Centralizado
/ Modelo Distribuído
Extras
Dica: 
   Não se preocupe,
o início sempre é difícil!
Introdução
       História: Criado por Linus Torvalds para gerenciar o
desenvolvimento do kernel do linux (antes era utilizado o bitKeeper).
Introdução
Git não tem nada a ver com o Subversion .
Git é um filesystem distribuído. Ou seja não só códigos
fontes, e sim qualquer tipo de arquivos.
Muito eficiente e confiável.
Utiliza SHA1 para identificação dos commits.
Dificilmente ocorre perca de arquivos no git.
Instalação
Linux
 Instalando git e ssh
 sd atgtisalgtcr gtsnsh
  uo p-e ntl i-oe i-v s

 Gerando chaves ssh:
 shkye - ra
  s egn t s
Instalação
Windows
 Download: http://git-scm.com/download/win
 Abrir git bash e gerar chaves ssh:
   shkye - ra
    s egn t s
Instalação
Mac
 Download: http://git-scm.com/download/mac
 Ou, usando homebrew
      be isalgt
       rw ntl i

 Gerando chaves ssh:
      shkye - ra
       s egn t s
Configuração
Definindo nome e email para identificar autor
 gtcni -goa ue.ae"anrj"
 i ofg -lbl srnm vgevs
 gtcni -goa ue.mi "anrj@mi.
 i ofg -lbl sreal vgevsgalc
 o"
 m


Verificando
 ct/sr/anr.icni
 a Uesvge/gtofg


Highlight
 /aqio.icni
 /ruv gtofg
 clr at
 oo: uo
Dica: 
Sempre leia as mensagens!
Iniciando um projeto
Iniciar git em um projeto
c psad_rjt
 d at_opoeo
gtii
 i nt

Ajuda
gthl ii
 i ep nt


Status
gtsau
 i tts
Áreas do Git
Working directory: diretório atual de
trabalho
Stage area: índice
.git: repositório de dados
Áreas do Git




http://git-scm.com/book/en/Getting-Started-Git-Basics
Continuando...
Adicionando arquivos ao índice
      gtad.fl.x /aea aqiofl.x
       i d  iett /pns ruv iett
      gtad.".x"/tdsaqio .x
       i d  *tt /oo ruvs tt
      gtad./Tdsaqio d wrigdrcoy
       i d  /oo ruvs o okn ietr

Após adicionar os arquivos ficam como new file, ou seja,
a serem adicionados no próximo commit.
Retirar do índice
      gtr -cce fl.x
       i m -ahd iett

Commit
      gtcmi - "rmiocmi"
       i omt m Pier omt

Log
      gtlg
       i o
Dica: 
    Sempre crie commits com
mensagens descrevendo a alteração
        feita no projeto!
Estrutura do commit
Commit é um pacote, um envelope.
Após adicionar os arquivos ficam como new file, ou seja,
a serem adicionados no próximo commit.
Branch e tags apontam sempre para commits
Commits posuem um identificador em SHA1, o que
torna praticamente impossível conflito de commits.
Mesmo utilizando trechos do SHA1 (até 5 caracteres no
máximo), ainda assim é possível identificar o commit.
O git nunca duplica conteúdos entre commits, apenas
faz referência ao blob do commit anterior e adiciona os
novos arquivos.
Estrutura do commit




   http://git-scm.com/book/en/Git-Branching-What-a-Branch-Is
Gerenciando o índice




 http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository
Gerenciando o índice
Imagine as ações abaixo:
      Mfcçon aqiofl.x
       oiaã o ruv iett
      gtadfl.x
       i d iett

Como desfazer?
      gtrstHA fl.x
       i ee ED iett

E para voltar ao ínicio (antes de modificiar o arquivo
file.txt)
      gtceku - fl.x
       i hcot - iett

Para todos os arquivos
      gtrstHA
       i ee ED
      /tdso aqio vla pr sau utakd
       /oo s ruvs otm aa tts nrce
Gerenciando o índice
Jogar fora último commit
gtrstHA~ -hr
i ee ED1 -ad
/aoaacbç aot pr ocmi atro
/gr  aea pna aa   omt neir

Esta operação parece destrutiva mas não é:
gtrfo
i elg
/gad tdsa cia qefrmjgdsfr
/ura oa s oss u oa oaa oa
gtmre<sa d cmi dsjd >
i eg   h1 o omt eeao

Voltar arquivos de commit para o índice
gtrstHA~
i ee ED1
Gerenciando o índice
Remover arquivos do índice
gtr -cce <fl >
 i m -ahd ie

Limpar arquivos do working directory
gtcen-
 i la f

Mais operações de índice...
gtad-
 i d i
Stash
Situação: você está desenvolvendo uma nova
funcionalidade e chega um pedido para resolver um bug.

Não é viável fazer um commit neste momento pois a
funcionalidade não está pronta.

Para auxiliar situações como essa, existe uma quarta área
(temporária) no git, chamada stash.
Stash
Criando um stash anônimo
      gtsah
       i ts

Listando
      gtsahls
       i ts it

Para voltar ao desenvolvimento após corrigir o bug
descrito na situação acima
      gtsahapy
       i ts pl

Removendo stash
      gtsahcer
       i ts la
Stash
Criando stash e definindo uma identificação
gtsahsv "aed ag"
 i ts ae fzno lo

Outros comandos para stash
gtsahapysah[]
 i ts pl ts@0
/vlapr osahdsjd
 /ot aa   ts eeao
gtsahpp
 i ts o
/tr d lsa alc eaaaosah
 /ia a it, pia  pg ts
gtsahdo sah0
 i ts rp ts{}
/rtr d lsad sah
 /eia a it e ts
Branch
Objetivo de trabalhar com branches: separar
funcionalidades durante o desenvolvimento.
Troca de contexto sem atrito
Criando branch chamando "desenvolvimento"
      gtceku - "eevliet"
       i hcot b dsnovmno

Trocando de master para "desenvolvimento"
      gtceku dsnovmno
       i hcot eevliet

Listando
      gtbac
       i rnh
Branch
Visualizando histórico
      gtlg-gah
       i o -rp

Unindo alterações feitas em um branch (ex:
"desenvolvimento") para o master
      gtceku mse
       i hcot atr
      gtmredsnovmno
       i eg eevliet

Removendo branch
      gtgtbac - dsnovmno
       i i rnh d eevliet

GUI para visualização
      gt -al&
       ik -l

Mesclando pequenos commits em um único
      gtmre<bac >-sus
       i eg  rnh  -qah
Dica: 
Evite trabalhar no master. O ideal é
    que cada branch tenha uma
          funcionalidade.




        http://git-scm.com/book/en/Git-Branching-Branching-Workflows
Merge / Rebase
Situação: estou trabalhando em um branch e alguém
alterou o master
O que deve ser feito é: manter sempre o branch atual
atulizado pelo master.
      gtrbs mse
       i eae atr

Se existir um conflito, ou seja, arquivo local é diferente
do arquivo que está no master, o arquivo deve ser
analizado e depois de corrigir o conflito:
      gtrbs -cniu
       i eae -otne
Merge / Rebase
Se estiver em trabalhando com um servidor remoto,
deve ser feito merge, pois o rebase é destruitivo.
Com rebase a linha de histório é reta, com merge é
criado um desvio.
Merge traz os commits e adiciona mais um no final.
Rebase junta todos os commits linearmente.
Merge 




        Rebase 



http://git-scm.com/book/en/Git-Branching-Rebasing
Respositórios remotos
Clonando um repositório
 gtcoetse.i tse
  i ln et/gt et2

Mostrando origem
 gtrmt
  i eoe
 gtrmt so oii
  i eoe hw rgn

Criando branch local a partir de branch remoto
 gtceku - dsnovmnooii/eevli
  i hcot b eevliet rgndsnov
 mno
  et

Exibindo braches locais e remotos
 gtbac -
  i rnh a

Enviando para repositório remoto
 gtps oii mse
  i uh rgn atr
Modelo Centralizado
Cenário: Dois desenvolvedores, cada um com uma
cópia local e um servidor remoto.
Criando repositório no servidor
      mdrtsegt
       ki et.i
      c tsegt
       d et.i
      gtii -br
       i nt -ae

Adicionando permissão de acesso
      c ~.s
       d /sh
      eh "hv rad uuro > atrzdky
       co cae s o sai" > uoie_es

Chave ssh no usuário
      ct~.s/drapb
       a /shi_s.u
Modelo Centralizado
No usuário, adicionando remote ao repositório local
      gtrmt adoii vge@7.61018/oe
       i eoe d rgn anr121.0.9:hm
      /i/eoioistsegt
       gtrpstro/et.i

Trazendo alterações do repositório remoto para um
branch especial
      gtfc oii mse
       i eh rgn atr

Fech seguido de merge
      gtpl
       i ul
Modelo Centralizado 




Modelo Distribuído 



  http://git-scm.com/book/en/Distributed-Git-Distributed-Workflows
Gitweb 
Interface gráfica para visualização dos repositórios no servidor
                            remoto.




                      http://git-scm.com/book/ch4-6.html
Extras
           Tags
gttgv.
 i a 10
gtps oii v.
 i uh rgn 10
gtps -tg
 i uh -as
gt- <bac >v.
 i b  rnh  08


           Logs
gtlg-sah
 i o -ts
gtlg-pet=nln
 i o -rtyoeie
gtlg-pet=omt"%n%d % -%"
 i o -rtyfra:[a a] h  s
gtlg-pet=omt"h-%"-gah
 i o -rtyfra:%  s -rp
gtlg-sne3.iue
 i o -ic=0mnts
gtlg-sne4hus-utl2hus
 i o -ic=.or -ni=.or
gtlg-sne4hus-utl2hus-bfr=
 i o -ic=.or -ni=.or -eoe
"030-5
 21-31"
Considerações Finais
Controle de versões é essencial para organização do
projeto
É fácil, basta usar frequentemente
Facilita contribuição em projetos open source
Github é a melhor forma de mostrar seu trabalho
como desenvolvedor, seja para empresas ou pessoas
Referências
Git SCM - Pro Git Book
Fabio Akita - Screencast - Começando com Git
Git for Computer Scientists
Git Documentation
Perguntas?
Obrigado!
Github

Facebook

Twitter

Google +

Linkedin

Slideshare

More Related Content

What's hot

Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Hélio Medeiros
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e GitIgor Steinmacher
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantesMario Ernesto
 
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
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHubWagner
 
Git that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBGit that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBHélio Medeiros
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoHélio Medeiros
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucketMarcio Barbosa
 
Lançando versões em um clique - deploy contínuo
Lançando versões em um clique - deploy contínuoLançando versões em um clique - deploy contínuo
Lançando versões em um clique - deploy contínuoHélio Medeiros
 
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
 
Aula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolAula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolBruno Orlandi
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Jonathan Célio
 

What's hot (20)

Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantes
 
Git e Github
Git e GithubGit e Github
Git e Github
 
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 - GitHub
Git - GitHubGit - GitHub
Git - GitHub
 
Git that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBGit that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUB
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimento
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Git v2
Git v2Git v2
Git v2
 
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+github
Git+githubGit+github
Git+github
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucket
 
Lançando versões em um clique - deploy contínuo
Lançando versões em um clique - deploy contínuoLançando versões em um clique - deploy contínuo
Lançando versões em um clique - deploy contínuo
 
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
 
Aula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolAula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - Webschool
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos
 

Viewers also liked

Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioMarcos Antônio de Souza Silva
 
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
 
Servidor DNS- BIND
Servidor DNS- BINDServidor DNS- BIND
Servidor DNS- BINDzbrendo
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para IniciantesLoiane Groner
 

Viewers also liked (7)

Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprio
 
Dns
DnsDns
Dns
 
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
 
Servidor DNS- BIND
Servidor DNS- BINDServidor DNS- BIND
Servidor DNS- BIND
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Linux - DNS
Linux - DNSLinux - DNS
Linux - DNS
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para Iniciantes
 

Similar to Controle de Versões com Git

Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoFabricio Nogueira
 
git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)Carlos Duarte do Nascimento
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVNLuciano Lima
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com gitHumberto Streb
 
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
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao GitOto Junior
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta gitDiogo Souza Machado
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteWaldyr Felix
 

Similar to Controle de Versões com Git (20)

Git 101
Git 101Git 101
Git 101
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Git
GitGit
Git
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Git
GitGit
Git
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básico
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVN
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com 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
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Git e github
Git e githubGit e github
Git e github
 
Git flow no projeto
Git flow no projetoGit flow no projeto
Git flow no projeto
 
Git ao GitHub
Git ao GitHubGit ao GitHub
Git ao GitHub
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 

Controle de Versões com Git

  • 1. Controle de Versões com      Vagner Santana http://vagnersantana.com
  • 2. Agenda Introdução Instalação Configuração Iniciando um projeto Áreas do git Commit Gerenciamento de índice Stash / Branch Merge / Rebase Repositórios remotos: Modelo Centralizado / Modelo Distribuído Extras
  • 3. Dica:  Não se preocupe, o início sempre é difícil!
  • 4. Introdução História: Criado por Linus Torvalds para gerenciar o desenvolvimento do kernel do linux (antes era utilizado o bitKeeper).
  • 5. Introdução Git não tem nada a ver com o Subversion . Git é um filesystem distribuído. Ou seja não só códigos fontes, e sim qualquer tipo de arquivos. Muito eficiente e confiável. Utiliza SHA1 para identificação dos commits. Dificilmente ocorre perca de arquivos no git.
  • 6. Instalação Linux Instalando git e ssh sd atgtisalgtcr gtsnsh uo p-e ntl i-oe i-v s Gerando chaves ssh: shkye - ra s egn t s
  • 7. Instalação Windows Download: http://git-scm.com/download/win Abrir git bash e gerar chaves ssh: shkye - ra s egn t s
  • 8. Instalação Mac Download: http://git-scm.com/download/mac Ou, usando homebrew be isalgt rw ntl i Gerando chaves ssh: shkye - ra s egn t s
  • 9. Configuração Definindo nome e email para identificar autor gtcni -goa ue.ae"anrj" i ofg -lbl srnm vgevs gtcni -goa ue.mi "anrj@mi. i ofg -lbl sreal vgevsgalc o" m Verificando ct/sr/anr.icni a Uesvge/gtofg Highlight /aqio.icni /ruv gtofg clr at oo: uo
  • 11. Iniciando um projeto Iniciar git em um projeto c psad_rjt d at_opoeo gtii i nt Ajuda gthl ii i ep nt Status gtsau i tts
  • 12. Áreas do Git Working directory: diretório atual de trabalho Stage area: índice .git: repositório de dados
  • 14. Continuando... Adicionando arquivos ao índice gtad.fl.x /aea aqiofl.x i d iett /pns ruv iett gtad.".x"/tdsaqio .x i d *tt /oo ruvs tt gtad./Tdsaqio d wrigdrcoy i d /oo ruvs o okn ietr Após adicionar os arquivos ficam como new file, ou seja, a serem adicionados no próximo commit. Retirar do índice gtr -cce fl.x i m -ahd iett Commit gtcmi - "rmiocmi" i omt m Pier omt Log gtlg i o
  • 15. Dica:  Sempre crie commits com mensagens descrevendo a alteração feita no projeto!
  • 16. Estrutura do commit Commit é um pacote, um envelope. Após adicionar os arquivos ficam como new file, ou seja, a serem adicionados no próximo commit. Branch e tags apontam sempre para commits Commits posuem um identificador em SHA1, o que torna praticamente impossível conflito de commits. Mesmo utilizando trechos do SHA1 (até 5 caracteres no máximo), ainda assim é possível identificar o commit. O git nunca duplica conteúdos entre commits, apenas faz referência ao blob do commit anterior e adiciona os novos arquivos.
  • 17. Estrutura do commit http://git-scm.com/book/en/Git-Branching-What-a-Branch-Is
  • 19. Gerenciando o índice Imagine as ações abaixo: Mfcçon aqiofl.x oiaã o ruv iett gtadfl.x i d iett Como desfazer? gtrstHA fl.x i ee ED iett E para voltar ao ínicio (antes de modificiar o arquivo file.txt) gtceku - fl.x i hcot - iett Para todos os arquivos gtrstHA i ee ED /tdso aqio vla pr sau utakd /oo s ruvs otm aa tts nrce
  • 20. Gerenciando o índice Jogar fora último commit gtrstHA~ -hr i ee ED1 -ad /aoaacbç aot pr ocmi atro /gr aea pna aa omt neir Esta operação parece destrutiva mas não é: gtrfo i elg /gad tdsa cia qefrmjgdsfr /ura oa s oss u oa oaa oa gtmre<sa d cmi dsjd > i eg h1 o omt eeao Voltar arquivos de commit para o índice gtrstHA~ i ee ED1
  • 21. Gerenciando o índice Remover arquivos do índice gtr -cce <fl > i m -ahd ie Limpar arquivos do working directory gtcen- i la f Mais operações de índice... gtad- i d i
  • 22. Stash Situação: você está desenvolvendo uma nova funcionalidade e chega um pedido para resolver um bug. Não é viável fazer um commit neste momento pois a funcionalidade não está pronta. Para auxiliar situações como essa, existe uma quarta área (temporária) no git, chamada stash.
  • 23. Stash Criando um stash anônimo gtsah i ts Listando gtsahls i ts it Para voltar ao desenvolvimento após corrigir o bug descrito na situação acima gtsahapy i ts pl Removendo stash gtsahcer i ts la
  • 24. Stash Criando stash e definindo uma identificação gtsahsv "aed ag" i ts ae fzno lo Outros comandos para stash gtsahapysah[] i ts pl ts@0 /vlapr osahdsjd /ot aa ts eeao gtsahpp i ts o /tr d lsa alc eaaaosah /ia a it, pia pg ts gtsahdo sah0 i ts rp ts{} /rtr d lsad sah /eia a it e ts
  • 25. Branch Objetivo de trabalhar com branches: separar funcionalidades durante o desenvolvimento. Troca de contexto sem atrito Criando branch chamando "desenvolvimento" gtceku - "eevliet" i hcot b dsnovmno Trocando de master para "desenvolvimento" gtceku dsnovmno i hcot eevliet Listando gtbac i rnh
  • 26. Branch Visualizando histórico gtlg-gah i o -rp Unindo alterações feitas em um branch (ex: "desenvolvimento") para o master gtceku mse i hcot atr gtmredsnovmno i eg eevliet Removendo branch gtgtbac - dsnovmno i i rnh d eevliet GUI para visualização gt -al& ik -l Mesclando pequenos commits em um único gtmre<bac >-sus i eg rnh -qah
  • 27. Dica:  Evite trabalhar no master. O ideal é que cada branch tenha uma funcionalidade. http://git-scm.com/book/en/Git-Branching-Branching-Workflows
  • 28. Merge / Rebase Situação: estou trabalhando em um branch e alguém alterou o master O que deve ser feito é: manter sempre o branch atual atulizado pelo master. gtrbs mse i eae atr Se existir um conflito, ou seja, arquivo local é diferente do arquivo que está no master, o arquivo deve ser analizado e depois de corrigir o conflito: gtrbs -cniu i eae -otne
  • 29. Merge / Rebase Se estiver em trabalhando com um servidor remoto, deve ser feito merge, pois o rebase é destruitivo. Com rebase a linha de histório é reta, com merge é criado um desvio. Merge traz os commits e adiciona mais um no final. Rebase junta todos os commits linearmente.
  • 30. Merge  Rebase  http://git-scm.com/book/en/Git-Branching-Rebasing
  • 31. Respositórios remotos Clonando um repositório gtcoetse.i tse i ln et/gt et2 Mostrando origem gtrmt i eoe gtrmt so oii i eoe hw rgn Criando branch local a partir de branch remoto gtceku - dsnovmnooii/eevli i hcot b eevliet rgndsnov mno et Exibindo braches locais e remotos gtbac - i rnh a Enviando para repositório remoto gtps oii mse i uh rgn atr
  • 32. Modelo Centralizado Cenário: Dois desenvolvedores, cada um com uma cópia local e um servidor remoto. Criando repositório no servidor mdrtsegt ki et.i c tsegt d et.i gtii -br i nt -ae Adicionando permissão de acesso c ~.s d /sh eh "hv rad uuro > atrzdky co cae s o sai" > uoie_es Chave ssh no usuário ct~.s/drapb a /shi_s.u
  • 33. Modelo Centralizado No usuário, adicionando remote ao repositório local gtrmt adoii vge@7.61018/oe i eoe d rgn anr121.0.9:hm /i/eoioistsegt gtrpstro/et.i Trazendo alterações do repositório remoto para um branch especial gtfc oii mse i eh rgn atr Fech seguido de merge gtpl i ul
  • 35. Gitweb  Interface gráfica para visualização dos repositórios no servidor remoto. http://git-scm.com/book/ch4-6.html
  • 36. Extras Tags gttgv. i a 10 gtps oii v. i uh rgn 10 gtps -tg i uh -as gt- <bac >v. i b rnh 08 Logs gtlg-sah i o -ts gtlg-pet=nln i o -rtyoeie gtlg-pet=omt"%n%d % -%" i o -rtyfra:[a a] h s gtlg-pet=omt"h-%"-gah i o -rtyfra:% s -rp gtlg-sne3.iue i o -ic=0mnts gtlg-sne4hus-utl2hus i o -ic=.or -ni=.or gtlg-sne4hus-utl2hus-bfr= i o -ic=.or -ni=.or -eoe "030-5 21-31"
  • 37. Considerações Finais Controle de versões é essencial para organização do projeto É fácil, basta usar frequentemente Facilita contribuição em projetos open source Github é a melhor forma de mostrar seu trabalho como desenvolvedor, seja para empresas ou pessoas
  • 38. Referências Git SCM - Pro Git Book Fabio Akita - Screencast - Começando com Git Git for Computer Scientists Git Documentation