Alexandre Arcanjo de Queiroz
alexandre.queiroz@live.com
linkedin.com/in/alexandrequeiroz
Agenda

O que é?

Quem usa?

Comparação com SVN

Instalação

Configuração

Workflow básico

Merge

Branching

Rem...
O que é?
 Sistema de controle de
versão
 Linus Torvalds
 Foco em rapidez e uso em
projetos de grande porte
 BitKeeper
Quem usa?
Comparação com SVN
Subversion Git
Centralizado Distribuído
Comparação com SVN
Subversion Git
Centralizado
Branches são usadas com
moderação
Distribuído
Criação de branches é
muito f...
Comparação com SVN
Subversion Git
Centralizado
Branches são usadas com
moderação
Conflitos ocorrem
frequentemente e
renome...
Comparação com SVN
Subversion Git
Centralizado
Branches são usadas com
moderação
Conflitos ocorrem
frequentemente e
renome...
Comparação com SVN
Subversion Git
Centralizado
Branches são usadas com
moderação
Conflitos ocorrem
frequentemente e
renome...
Instalação
sudo apt-get install git # Debian
yum install git-core # Fedora
sudo port install git-core # Mac
http://msysgit...
Configuração
# Configurações globais
git config --global user.name "Alexandre Queiroz"
git config --global user.email "ale...
Workflow básico
Workflow básico
git clone https://github.com/alexandrearcanjodequeiroz/hello-git.git
vim teste2.html
git status
git add te...
Workflow básico
Talk is cheap. Show me the code!!!!!!
Estados dos arquivos
Workflow básico
 Isso funciona muito bem quando estou trabalhando
sozinho.
 Mas e em grupo?
Workflow básico
git pull
git fetch origin
git merge origin/master
Merge
 Não posso executar git push sem que meu repositório esteja
atual...
Merge
Talk is cheap. Show me the code!!!!!!
Branching
 A beleza do Git está em trabalhar com branches locais!!
 Trabalhar em uma branch local para cada funcionalida...
Branching
Talk is cheap. Show me the code!!!!!!
Remote Branches
 E se eu quiser clonar uma branch remota específica?
 E para verificar em qual branch local eu estou?
 ...
Remote Branches
 Você recebe através do git clone referência todas as
branches existentes naquele momento!!!!
Remote Branches
 Como exibir as branches existentes? E por tipo?
git branch # Exibe as branches locais
git branch -r # Ex...
Remote Branches
Talk is cheap. Show me the code!!!!!!
Revertendo arquivos
 E se eu precisar reverter um arquivo?
 E a branch toda?
 O que é esse tal de HEAD?
git checkout --...
Revertendo arquivos
Revertendo arquivos
Talk is cheap. Show me the code!!!!!!
Removendo arquivos
 Use o git rm:
git rm teste.sql
git rm -f teste.sql # força remoção
git rm --cached teste.sql # remove...
Salvando trabalho em progresso
 Você está trabalhando em uma branch e surgiu um bug crítico
(novidade!!)
 Você poderia s...
Salvando trabalho em progresso
vim index.html
vim products.html
vim customer.html # trabalhando “normalmente”
SURGIU O BUG...
Salvando trabalho em progresso
Talk is cheap. Show me the code!!!!!!
Salvando trabalho em progresso
● Outros sub comandos do git stash:
git stash list # consigo ver a lista de WIP
git stash s...
Salvando trabalho em progresso
 Problema:
 git stash somente funciona com arquivos gerenciados pelo git
(tracked files)
...
Ignorando arquivos
 Arquivo .gitignore
# ignorando classes compiladas do Java
**/*.class
# ignorando o .project e o .clas...
Pesquisas em arquivos
● Git possui um comando para busca em arquivos baseado
em expressões regulares: o git grep
git grep ...
Repositórios remotos
 O git define automaticamente o repositório origin quando se faz um
git clone
 Você pode ter mais d...
Repositórios remotos
git remote show origin
git remote show
git remote add novo git@bitbucket.org:alexandrequeiroz/hello-g...
Tags
 Dois tipos de tags: leves e anotadas
 Leve = ponteiro
 Anotada = Objetos inteiros no banco de dados do git
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
gi...
Tags
Talk is cheap. Show me the code!!!!!!
Ferramentas: TortoiseGit
Ferramentas: EGit
Ferramentas: EGit
Ferramentas: GitLab
Ferramentas: GitHub
Ferramentas: BitBucket
Ferramentas: Jenkins Git Plugin
Ferramentas: Jenkins Git Plugin
Perguntas?
Alexandre Arcanjo de Queiroz
alexandre.queiroz@live.com
linkedin.com/in/alexandrequeiroz
Obrigado!!!!
Extra: configurando Meld como
difftool no Debian/Ubuntu/Mint
sudo apt-get install meld # instalando o meld
cd /usr/local/b...
Extra: configurando Meld como
mergetool no Debian/Ubuntu/Mint
sudo apt-get install meld # instalando o meld
git config --g...
Referências
 GIT SCM. Git. Disponível em: <http://git-scm.com>. Acesso
em: 18 abr. 2014.
 ROSENBERG, Jeroen. Git the fas...
Upcoming SlideShare
Loading in...5
×

Introdução ao Git

363

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
363
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introdução ao Git

  1. 1. Alexandre Arcanjo de Queiroz alexandre.queiroz@live.com linkedin.com/in/alexandrequeiroz
  2. 2. Agenda  O que é?  Quem usa?  Comparação com SVN  Instalação  Configuração  Workflow básico  Merge  Branching  Remote branches  Revertendo arquivos  Removendo arquivos  Salvando trabalho em progresso  Ignorando arquivos  Pesquisas em arquivos  Repositórios remotos  Tags  Ferramentas
  3. 3. O que é?  Sistema de controle de versão  Linus Torvalds  Foco em rapidez e uso em projetos de grande porte  BitKeeper
  4. 4. Quem usa?
  5. 5. Comparação com SVN Subversion Git Centralizado Distribuído
  6. 6. Comparação com SVN Subversion Git Centralizado Branches são usadas com moderação Distribuído Criação de branches é muito fácil e é um conceito central
  7. 7. Comparação com SVN Subversion Git Centralizado Branches são usadas com moderação Conflitos ocorrem frequentemente e renomear não é tratado muito bem Distribuído Criação de branches é muito fácil e é um conceito central Conflitos ocorrem com menos frequência, renomear é tratado corretamente
  8. 8. Comparação com SVN Subversion Git Centralizado Branches são usadas com moderação Conflitos ocorrem frequentemente e renomear não é tratado muito bem Pode ser lento devido a latência da rede Distribuído Criação de branches é muito fácil e é um conceito central Conflitos ocorrem com menos frequência, renomear é tratado corretamente Mais rápido uma vez que menos operações envolvem a latência da rede
  9. 9. Comparação com SVN Subversion Git Centralizado Branches são usadas com moderação Conflitos ocorrem frequentemente e renomear não é tratado muito bem Pode ser lento devido a latência da rede Pode consumir algum espaço em disco Distribuído Criação de branches é muito fácil e é um conceito central Conflitos ocorrem com menos frequência, renomear é tratado corretamente Mais rápido uma vez que menos operações envolvem a latência da rede Consome 30 vezes menos espaço em disco
  10. 10. Instalação sudo apt-get install git # Debian yum install git-core # Fedora sudo port install git-core # Mac http://msysgit.github.com # Windows
  11. 11. Configuração # Configurações globais git config --global user.name "Alexandre Queiroz" git config --global user.email "alexandre.queiroz@live.com" # Verificando configuracoes git config --global --list
  12. 12. Workflow básico
  13. 13. Workflow básico 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. 14. Workflow básico Talk is cheap. Show me the code!!!!!!
  15. 15. Estados dos arquivos
  16. 16. Workflow básico  Isso funciona muito bem quando estou trabalhando sozinho.  Mas e em grupo?
  17. 17. Workflow básico
  18. 18. git pull git fetch origin git merge origin/master Merge  Não posso executar git push sem que meu repositório esteja atualizado  Tem que fazer o merge do código!!! OU git mergetool E
  19. 19. Merge Talk is cheap. Show me the code!!!!!!
  20. 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!  É possível trocar de branch facilmente (nada de copiar os arquivos para o disco e fazer revert!!) git branch issue7 git checkout issue7
  21. 21. Branching Talk is cheap. Show me the code!!!!!!
  22. 22. Remote Branches  E se eu quiser clonar uma branch remota específica?  E para verificar em qual branch local eu estou?  Eu clonei somente a branch remota 1.0? git clone -b 1.0 git@bitbucket.org:alexandrequeiroz/hello-git.git git branch
  23. 23. Remote Branches  Você recebe através do git clone referência todas as branches existentes naquele momento!!!!
  24. 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. 25. Remote Branches Talk is cheap. Show me the code!!!!!!
  26. 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. 27. Revertendo arquivos
  28. 28. Revertendo arquivos Talk is cheap. Show me the code!!!!!!
  29. 29. Removendo arquivos  Use o git rm: git rm teste.sql git rm -f teste.sql # força remoção git rm --cached teste.sql # remove somente da staging area
  30. 30. Salvando trabalho em progresso  Você está trabalhando em uma branch e surgiu um bug crítico (novidade!!)  Você poderia simplesmente commitar as alterações na sua branch local e fazer checkout de uma nova branch para corrigir o bug  Mas as suas modificações não estão prontas para serem commitadas  Você pode então salvar o progresso de seu trabalho (WIP) com o git stash e corrigir na branch atual!!!
  31. 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. 32. Salvando trabalho em progresso Talk is cheap. Show me the code!!!!!!
  33. 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 não remove da lista de stash
  34. 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 não estiver no Git (com git add), ele não vai para o WIP git add -- all # É bom fazer isso!!
  35. 35. Ignorando arquivos  Arquivo .gitignore # ignorando classes compiladas do Java **/*.class # ignorando o .project e o .classpath do Eclipse .project .classpath # ignorando diretórios de cache do Python/DJango hellodjango/hellodjango/__pycache__/* hellodjango/polls/__pycache__/* # ignorando arquivo do SQLLite hellodjango/db.sqlite3
  36. 36. Pesquisas em arquivos ● Git possui um comando para busca em arquivos baseado em expressões regulares: o git grep git grep <regexp> # sintaxe básica 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. 37. Repositórios remotos  O git define automaticamente o repositório origin quando se faz um git clone  Você pode ter mais de um repositório remoto  Caráter distribuído
  38. 38. Repositórios remotos git remote show origin git remote show git remote add novo git@bitbucket.org:alexandrequeiroz/hello-git-novo.git git push novo master git remote set-url foo git@bitbucket.org:alexandrequeiroz/foo.git git remote rm old git remote rename novo new
  39. 39. Tags  Dois tipos de tags: leves e anotadas  Leve = ponteiro  Anotada = Objetos inteiros no banco de dados do git
  40. 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. 41. Tags Talk is cheap. Show me the code!!!!!!
  42. 42. Ferramentas: TortoiseGit
  43. 43. Ferramentas: EGit
  44. 44. Ferramentas: EGit
  45. 45. Ferramentas: GitLab
  46. 46. Ferramentas: GitHub
  47. 47. Ferramentas: BitBucket
  48. 48. Ferramentas: Jenkins Git Plugin
  49. 49. Ferramentas: Jenkins Git Plugin
  50. 50. Perguntas?
  51. 51. Alexandre Arcanjo de Queiroz alexandre.queiroz@live.com linkedin.com/in/alexandrequeiroz Obrigado!!!!
  52. 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 # permissão 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. 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 padrão git config --global mergetool.keepBackup false # não mantém o .orig git fetch origin # trás as modificações do remoto git merge origin/master # faz o merge git config -- global -- list # verificando git mergetool # resolvendo os conflitos CONFLITO!!!!!
  54. 54. Referências  GIT SCM. Git. Disponível em: <http://git-scm.com>. Acesso em: 18 abr. 2014.  ROSENBERG, Jeroen. Git the fast verson control system. Disponível em: <http://pt.slideshare.net/jeroen_rosenberg/git- 2757047>. Acesso em: 18 abr. 2014.  GIT Guys. HEAD: Where are we? Where Were We? Disponível em: <http://www.gitguys.com/topics/commits-and-referring-to- commits/>. Acesso em: 26 abr. 2014.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×