introdução ao git

Download Introdução ao Git

If you can't read please download the document

Upload: alexandre-arcanjo-de-queiroz

Post on 26-Jun-2015

368 views

Category:

Technology


2 download

DESCRIPTION

Apresentação sobre o sistema de controle de versão Git abordando a instalação, workflow básico, branching, criação de tags, repositórios remotos, manipulação de arquivos e ferramentas.

TRANSCRIPT

2. Agenda O que ? Quem usa? Comparao com SVN Instalao Configurao Workflow bsico Merge Branching Remote branches Revertendo arquivos Removendo arquivos Salvando trabalho em progresso Ignorando arquivos Pesquisas em arquivos Repositrios remotos Tags Ferramentas 3. O que ? Sistema de controle de verso Linus Torvalds Foco em rapidez e uso em projetos de grande porte BitKeeper 4. Quem usa? 5. Comparao com SVN Subversion Git Centralizado Distribudo 6. Comparao com SVN Subversion Git Centralizado Branches so usadas com moderao Distribudo Criao de branches muito fcil e um conceito central 7. Comparao com SVN Subversion Git Centralizado Branches so usadas com moderao Conflitos ocorrem frequentemente e renomear no tratado muito bem Distribudo Criao de branches muito fcil e um conceito central Conflitos ocorrem com menos frequncia, renomear tratado corretamente 8. Comparao com SVN Subversion Git Centralizado Branches so usadas com moderao Conflitos ocorrem frequentemente e renomear no tratado muito bem Pode ser lento devido a latncia da rede Distribudo Criao de branches muito fcil e um conceito central Conflitos ocorrem com menos frequncia, renomear tratado corretamente Mais rpido uma vez que menos operaes envolvem a latncia da rede 9. Comparao com SVN Subversion Git Centralizado Branches so usadas com moderao Conflitos ocorrem frequentemente e renomear no tratado muito bem Pode ser lento devido a latncia da rede Pode consumir algum espao em disco Distribudo Criao de branches muito fcil e um conceito central Conflitos ocorrem com menos frequncia, renomear tratado corretamente Mais rpido uma vez que menos operaes envolvem a latncia da rede Consome 30 vezes menos espao em disco 10. Instalao sudo apt-get install git # Debian yum install git-core # Fedora sudo port install git-core # Mac http://msysgit.github.com # Windows 11. Configurao # Configuraes globais git config --global user.name "Alexandre Queiroz" git config --global user.email "[email protected]" # Verificando configuracoes git config --global --list 12. Workflow bsico 13. Workflow bsico git clone https://github.com/alexandrearcanjodequeiroz/hello-git.git vim teste2.html git status git add teste2.html # staging area git commit -m 'Meu segundo commit' vim teste.html git status git add teste.html # staging area git commit -m 'Meu primeiro commit' git push -u origin master 14. Workflow bsico Talk is cheap. Show me the code!!!!!! 15. Estados dos arquivos 16. Workflow bsico Isso funciona muito bem quando estou trabalhando sozinho. Mas e em grupo? 17. Workflow bsico 18. git pull git fetch origin git merge origin/master Merge No posso executar git push sem que meu repositrio esteja atualizado Tem que fazer o merge do cdigo!!! OU git mergetool E 19. Merge Talk is cheap. Show me the code!!!!!! 20. Branching A beleza do Git est em trabalhar com branches locais!! Trabalhar em uma branch local para cada funcionalidade ou bug uma boa ideia! possvel trocar de branch facilmente (nada de copiar os arquivos para o disco e fazer revert!!) git branch issue7 git checkout issue7 21. Branching Talk is cheap. Show me the code!!!!!! 22. Remote Branches E se eu quiser clonar uma branch remota especfica? E para verificar em qual branch local eu estou? Eu clonei somente a branch remota 1.0? git clone -b 1.0 [email protected]:alexandrequeiroz/hello-git.git git branch 23. Remote Branches Voc recebe atravs do git clone referncia todas as branches existentes naquele momento!!!! 24. Remote Branches Como exibir as branches existentes? E por tipo? git branch # Exibe as branches locais git branch -r # Exibe as branches remotas git branch -a # Exibe todas as branches 25. Remote Branches Talk is cheap. Show me the code!!!!!! 26. Revertendo arquivos E se eu precisar reverter um arquivo? E a branch toda? O que esse tal de HEAD? git checkout -- arquivo.txt git reset hard HEAD 27. Revertendo arquivos 28. Revertendo arquivos Talk is cheap. Show me the code!!!!!! 29. Removendo arquivos Use o git rm: git rm teste.sql git rm -f teste.sql # fora remoo git rm --cached teste.sql # remove somente da staging area 30. Salvando trabalho em progresso Voc est trabalhando em uma branch e surgiu um bug crtico (novidade!!) Voc poderia simplesmente commitar as alteraes na sua branch local e fazer checkout de uma nova branch para corrigir o bug Mas as suas modificaes no esto prontas para serem commitadas Voc pode ento salvar o progresso de seu trabalho (WIP) com o git stash e corrigir na branch atual!!! 31. Salvando trabalho em progresso vim index.html vim products.html vim customer.html # trabalhando normalmente SURGIU O BUG!!!!!! git stash # salvo o trabalho (ele volta para o ltimo commit) # corrige o bug git stash pop # ou git stash apply # continuo meu trabalho 32. Salvando trabalho em progresso Talk is cheap. Show me the code!!!!!! 33. Salvando trabalho em progresso Outros sub comandos do git stash: git stash list # consigo ver a lista de WIP git stash show stash@{0} #status do primeiro stash git stash branch issue10 stash@{0} # crio uma branchgit stash branch issue10 stash@{0} # crio uma branch git stash drop stash@{0} # apago minha stash git stash apply # aplica mas no remove da lista de stash 34. Salvando trabalho em progresso Problema: git stash somente funciona com arquivos gerenciados pelo git (tracked files) Ou seja, se eu criar um arquivo novo (untracked) e no estiver no Git (com git add), ele no vai para o WIP git add -- all # bom fazer isso!! 35. Ignorando arquivos Arquivo .gitignore # ignorando classes compiladas do Java **/*.class # ignorando o .project e o .classpath do Eclipse .project .classpath # ignorando diretrios de cache do Python/DJango hellodjango/hellodjango/__pycache__/* hellodjango/polls/__pycache__/* # ignorando arquivo do SQLLite hellodjango/db.sqlite3 36. Pesquisas em arquivos Git possui um comando para busca em arquivos baseado em expresses regulares: o git grep git grep # sintaxe bsica git grep customer.js # busca em todos os arquivos por customer.js git grep -n customer.js # line number git grep --cached customer.js # somente na staging area git grep -i CUSTOMER # ignore case git grep setTimeout branch7 -- *.js # somente em js na branch7 37. Repositrios remotos O git define automaticamente o repositrio origin quando se faz um git clone Voc pode ter mais de um repositrio remoto Carter distribudo 38. Repositrios remotos git remote show origin git remote show git remote add novo [email protected]:alexandrequeiroz/hello-git-novo.git git push novo master git remote set-url foo [email protected]:alexandrequeiroz/foo.git git remote rm old git remote rename novo new 39. Tags Dois tipos de tags: leves e anotadas Leve = ponteiro Anotada = Objetos inteiros no banco de dados do git 40. Tags git tag # Exibindo tags git tag v1.1.0 # Criando tag leve git tag -a v1.1.1 -m 'Criando tag anotada' # tag anotada git push origin v1.1.0 git push origin --tags 41. Tags Talk is cheap. Show me the code!!!!!! 42. Ferramentas: TortoiseGit 43. Ferramentas: EGit 44. Ferramentas: EGit 45. Ferramentas: GitLab 46. Ferramentas: GitHub 47. Ferramentas: BitBucket 48. Ferramentas: Jenkins Git Plugin 49. Ferramentas: Jenkins Git Plugin 50. Perguntas? 51. Alexandre Arcanjo de Queiroz [email protected] linkedin.com/in/alexandrequeiroz Obrigado!!!! 52. Extra: configurando Meld como difftool no Debian/Ubuntu/Mint sudo apt-get install meld # instalando o meld cd /usr/local/bin sudo vim git-meld sudo chmod 777 git-meld # permisso git config -- global diff.external git-meld # configurando no git #!/bin/bash meld $5 $2 git diff branch7 # efetuando o diff da branch atual com a branch7 git config -- global -- list # verificando 53. Extra: configurando Meld como mergetool no Debian/Ubuntu/Mint sudo apt-get install meld # instalando o meld git config --global merge.tool meld # ferramenta de merge padro git config --global mergetool.keepBackup false # no mantm o .orig git fetch origin # trs as modificaes do remoto git merge origin/master # faz o merge git config -- global -- list # verificando git mergetool # resolvendo os conflitos CONFLITO!!!!! 54. Referncias GIT SCM. Git. Disponvel em: . Acesso em: 18 abr. 2014. ROSENBERG, Jeroen. Git the fast verson control system. Disponvel em: . Acesso em: 18 abr. 2014. GIT Guys. HEAD: Where are we? Where Were We? Disponvel em: . Acesso em: 26 abr. 2014.