Controle deVersões com                                        Vagner Santana    http://vagnersantana.com
AgendaIntroduçãoInstalaçãoConfiguraçãoIniciando um projetoÁreas do gitCommitGerenciamento de índiceStash / BranchMerge / R...
Dica:    Não se preocupe,o início sempre é difícil!
Introdução       História: Criado por Linus Torvalds para gerenciar odesenvolvimento do kernel do linux (antes era utiliza...
IntroduçãoGit não tem nada a ver com o Subversion .Git é um filesystem distribuído. Ou seja não só códigosfontes, e sim qu...
InstalaçãoLinux 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çãoWindows Download: http://git-scm.com/download/win Abrir git bash e gerar chaves ssh:   shkye - ra    s egn t s
InstalaçãoMac Download: http://git-scm.com/download/mac Ou, usando homebrew      be isalgt       rw ntl i Gerando chaves s...
ConfiguraçãoDefinindo nome e email para identificar autor gtcni -goa ue.ae"anrj" i ofg -lbl srnm vgevs gtcni -goa ue.mi "a...
Dica: Sempre leia as mensagens!
Iniciando um projetoIniciar git em um projetoc psad_rjt d at_opoeogtii i ntAjudagthl ii i ep ntStatusgtsau i tts
Áreas do GitWorking directory: diretório atual detrabalhoStage area: índice.git: repositório de dados
Áreas do Githttp://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"/tds...
Dica:     Sempre crie commits commensagens descrevendo a alteração        feita no projeto!
Estrutura do commitCommit é um pacote, um envelope.Após adicionar os arquivos ficam como new file, ou seja,a serem adicion...
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 índiceImagine as ações abaixo:      Mfcçon aqiofl.x       oiaã o ruv iett      gtadfl.x       i d iettComo d...
Gerenciando o índiceJogar fora último commitgtrstHA~ -hri ee ED1 -ad/aoaacbç aot pr ocmi atro/gr  aea pna aa   omt neirEst...
Gerenciando o índiceRemover arquivos do índicegtr -cce <fl > i m -ahd ieLimpar arquivos do working directorygtcen- i la fM...
StashSituação: você está desenvolvendo uma novafuncionalidade e chega um pedido para resolver um bug.Não é viável fazer um...
StashCriando um stash anônimo      gtsah       i tsListando      gtsahls       i ts itPara voltar ao desenvolvimento após ...
StashCriando stash e definindo uma identificaçãogtsahsv "aed ag" i ts ae fzno loOutros comandos para stashgtsahapysah[] i ...
BranchObjetivo de trabalhar com branches: separarfuncionalidades durante o desenvolvimento.Troca de contexto sem atritoCri...
BranchVisualizando histórico      gtlg-gah       i o -rpUnindo alterações feitas em um branch (ex:"desenvolvimento") para ...
Dica: Evite trabalhar no master. O ideal é    que cada branch tenha uma          funcionalidade.        http://git-scm.com...
Merge / RebaseSituação: estou trabalhando em um branch e alguémalterou o masterO que deve ser feito é: manter sempre o bra...
Merge / RebaseSe estiver em trabalhando com um servidor remoto,deve ser feito merge, pois o rebase é destruitivo.Com rebas...
Merge         Rebase http://git-scm.com/book/en/Git-Branching-Rebasing
Respositórios remotosClonando um repositório gtcoetse.i tse  i ln et/gt et2Mostrando origem gtrmt  i eoe gtrmt so oii  i e...
Modelo CentralizadoCenário: Dois desenvolvedores, cada um com umacópia local e um servidor remoto.Criando repositório no s...
Modelo CentralizadoNo usuário, adicionando remote ao repositório local      gtrmt adoii vge@7.61018/oe       i eoe d rgn a...
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.                ...
Extras           Tagsgttgv. i a 10gtps oii v. i uh rgn 10gtps -tg i uh -asgt- <bac >v. i b  rnh  08           Logsgtlg-sah...
Considerações FinaisControle de versões é essencial para organização doprojetoÉ fácil, basta usar frequentementeFacilita c...
ReferênciasGit SCM - Pro Git BookFabio Akita - Screencast - Começando com GitGit for Computer ScientistsGit Documentation
Perguntas?
Obrigado!GithubFacebookTwitterGoogle +LinkedinSlideshare
Upcoming SlideShare
Loading in …5
×

Controle de Versões com Git

557
-1

Published on

This presentation talks about how to start a project using git. From installation and configuration, through concepts of structure commits, index management, stash, branch, merge, rebase, remote repositories and extra themes.

Published in: Technology

Controle de Versões com Git

  1. 1. Controle deVersões com      Vagner Santana http://vagnersantana.com
  2. 2. AgendaIntroduçãoInstalaçãoConfiguraçãoIniciando um projetoÁreas do gitCommitGerenciamento de índiceStash / BranchMerge / RebaseRepositórios remotos: Modelo Centralizado/ Modelo DistribuídoExtras
  3. 3. Dica:  Não se preocupe,o início sempre é difícil!
  4. 4. Introdução História: Criado por Linus Torvalds para gerenciar odesenvolvimento do kernel do linux (antes era utilizado o bitKeeper).
  5. 5. IntroduçãoGit não tem nada a ver com o Subversion .Git é um filesystem distribuído. Ou seja não só códigosfontes, 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. 6. InstalaçãoLinux 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. 7. InstalaçãoWindows Download: http://git-scm.com/download/win Abrir git bash e gerar chaves ssh: shkye - ra s egn t s
  8. 8. InstalaçãoMac 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. 9. ConfiguraçãoDefinindo 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" mVerificando ct/sr/anr.icni a Uesvge/gtofgHighlight /aqio.icni /ruv gtofg clr at oo: uo
  10. 10. Dica: Sempre leia as mensagens!
  11. 11. Iniciando um projetoIniciar git em um projetoc psad_rjt d at_opoeogtii i ntAjudagthl ii i ep ntStatusgtsau i tts
  12. 12. Áreas do GitWorking directory: diretório atual detrabalhoStage area: índice.git: repositório de dados
  13. 13. Áreas do Githttp://git-scm.com/book/en/Getting-Started-Git-Basics
  14. 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 ietrApó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 iettCommit gtcmi - "rmiocmi" i omt m Pier omtLog gtlg i o
  15. 15. Dica:  Sempre crie commits commensagens descrevendo a alteração feita no projeto!
  16. 16. Estrutura do commitCommit é 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 commitsCommits posuem um identificador em SHA1, o quetorna praticamente impossível conflito de commits.Mesmo utilizando trechos do SHA1 (até 5 caracteres nomáximo), ainda assim é possível identificar o commit.O git nunca duplica conteúdos entre commits, apenasfaz referência ao blob do commit anterior e adiciona osnovos arquivos.
  17. 17. Estrutura do commit http://git-scm.com/book/en/Git-Branching-What-a-Branch-Is
  18. 18. Gerenciando o índice http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository
  19. 19. Gerenciando o índiceImagine as ações abaixo: Mfcçon aqiofl.x oiaã o ruv iett gtadfl.x i d iettComo desfazer? gtrstHA fl.x i ee ED iettE para voltar ao ínicio (antes de modificiar o arquivofile.txt) gtceku - fl.x i hcot - iettPara todos os arquivos gtrstHA i ee ED /tdso aqio vla pr sau utakd /oo s ruvs otm aa tts nrce
  20. 20. Gerenciando o índiceJogar fora último commitgtrstHA~ -hri ee ED1 -ad/aoaacbç aot pr ocmi atro/gr aea pna aa omt neirEsta operação parece destrutiva mas não é:gtrfoi elg/gad tdsa cia qefrmjgdsfr/ura oa s oss u oa oaa oagtmre<sa d cmi dsjd >i eg h1 o omt eeaoVoltar arquivos de commit para o índicegtrstHA~i ee ED1
  21. 21. Gerenciando o índiceRemover arquivos do índicegtr -cce <fl > i m -ahd ieLimpar arquivos do working directorygtcen- i la fMais operações de índice...gtad- i d i
  22. 22. StashSituação: você está desenvolvendo uma novafuncionalidade e chega um pedido para resolver um bug.Não é viável fazer um commit neste momento pois afuncionalidade não está pronta.Para auxiliar situações como essa, existe uma quarta área(temporária) no git, chamada stash.
  23. 23. StashCriando um stash anônimo gtsah i tsListando gtsahls i ts itPara voltar ao desenvolvimento após corrigir o bugdescrito na situação acima gtsahapy i ts plRemovendo stash gtsahcer i ts la
  24. 24. StashCriando stash e definindo uma identificaçãogtsahsv "aed ag" i ts ae fzno loOutros comandos para stashgtsahapysah[] i ts pl ts@0/vlapr osahdsjd /ot aa ts eeaogtsahpp i ts o/tr d lsa alc eaaaosah /ia a it, pia pg tsgtsahdo sah0 i ts rp ts{}/rtr d lsad sah /eia a it e ts
  25. 25. BranchObjetivo de trabalhar com branches: separarfuncionalidades durante o desenvolvimento.Troca de contexto sem atritoCriando branch chamando "desenvolvimento" gtceku - "eevliet" i hcot b dsnovmnoTrocando de master para "desenvolvimento" gtceku dsnovmno i hcot eevlietListando gtbac i rnh
  26. 26. BranchVisualizando histórico gtlg-gah i o -rpUnindo alterações feitas em um branch (ex:"desenvolvimento") para o master gtceku mse i hcot atr gtmredsnovmno i eg eevlietRemovendo branch gtgtbac - dsnovmno i i rnh d eevlietGUI para visualização gt -al& ik -lMesclando pequenos commits em um único gtmre<bac >-sus i eg rnh -qah
  27. 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. 28. Merge / RebaseSituação: estou trabalhando em um branch e alguémalterou o masterO que deve ser feito é: manter sempre o branch atualatulizado pelo master. gtrbs mse i eae atrSe existir um conflito, ou seja, arquivo local é diferentedo arquivo que está no master, o arquivo deve seranalizado e depois de corrigir o conflito: gtrbs -cniu i eae -otne
  29. 29. Merge / RebaseSe 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. 30. Merge  Rebase http://git-scm.com/book/en/Git-Branching-Rebasing
  31. 31. Respositórios remotosClonando um repositório gtcoetse.i tse i ln et/gt et2Mostrando origem gtrmt i eoe gtrmt so oii i eoe hw rgnCriando branch local a partir de branch remoto gtceku - dsnovmnooii/eevli i hcot b eevliet rgndsnov mno etExibindo braches locais e remotos gtbac - i rnh aEnviando para repositório remoto gtps oii mse i uh rgn atr
  32. 32. Modelo CentralizadoCenário: Dois desenvolvedores, cada um com umacópia local e um servidor remoto.Criando repositório no servidor mdrtsegt ki et.i c tsegt d et.i gtii -br i nt -aeAdicionando permissão de acesso c ~.s d /sh eh "hv rad uuro > atrzdky co cae s o sai" > uoie_esChave ssh no usuário ct~.s/drapb a /shi_s.u
  33. 33. Modelo CentralizadoNo 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.iTrazendo alterações do repositório remoto para umbranch especial gtfc oii mse i eh rgn atrFech seguido de merge gtpl i ul
  34. 34. Modelo Centralizado Modelo Distribuído  http://git-scm.com/book/en/Distributed-Git-Distributed-Workflows
  35. 35. Gitweb Interface gráfica para visualização dos repositórios no servidor remoto. http://git-scm.com/book/ch4-6.html
  36. 36. Extras Tagsgttgv. i a 10gtps oii v. i uh rgn 10gtps -tg i uh -asgt- <bac >v. i b rnh 08 Logsgtlg-sah i o -tsgtlg-pet=nln i o -rtyoeiegtlg-pet=omt"%n%d % -%" i o -rtyfra:[a a] h sgtlg-pet=omt"h-%"-gah i o -rtyfra:% s -rpgtlg-sne3.iue i o -ic=0mntsgtlg-sne4hus-utl2hus i o -ic=.or -ni=.orgtlg-sne4hus-utl2hus-bfr= i o -ic=.or -ni=.or -eoe"030-5 21-31"
  37. 37. Considerações FinaisControle de versões é essencial para organização doprojetoÉ fácil, basta usar frequentementeFacilita contribuição em projetos open sourceGithub é a melhor forma de mostrar seu trabalhocomo desenvolvedor, seja para empresas ou pessoas
  38. 38. ReferênciasGit SCM - Pro Git BookFabio Akita - Screencast - Começando com GitGit for Computer ScientistsGit Documentation
  39. 39. Perguntas?
  40. 40. Obrigado!GithubFacebookTwitterGoogle +LinkedinSlideshare

×