• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Controle de Versões com Git
 

Controle de Versões com Git

on

  • 530 views

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 ...

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.

Statistics

Views

Total Views
530
Views on SlideShare
527
Embed Views
3

Actions

Likes
6
Downloads
13
Comments
0

1 Embed 3

http://www.linkedin.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

Controle de Versões com Git Controle de Versões com Git Presentation Transcript

  • Controle deVersões com      Vagner Santana http://vagnersantana.com
  • AgendaIntroduçãoInstalaçãoConfiguraçãoIniciando um projetoÁreas do gitCommitGerenciamento de índiceStash / BranchMerge / RebaseRepositórios remotos: Modelo Centralizado/ Modelo DistribuídoExtras
  • 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 utilizado o bitKeeper).
  • 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.
  • 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 ssh: shkye - ra s egn t s
  • 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
  • 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"/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
  • 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 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.
  • 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 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
  • 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
  • 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
  • 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.
  • 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
  • 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
  • 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
  • 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
  • Dica: Evite trabalhar no master. O ideal é que cada branch tenha uma funcionalidade. http://git-scm.com/book/en/Git-Branching-Branching-Workflows
  • 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
  • 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.
  • 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 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
  • 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
  • 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
  • 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 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"
  • 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
  • ReferênciasGit SCM - Pro Git BookFabio Akita - Screencast - Começando com GitGit for Computer ScientistsGit Documentation
  • Perguntas?
  • Obrigado!GithubFacebookTwitterGoogle +LinkedinSlideshare