O documento fornece uma introdução ao sistema de controle de versão distribuído Git. Ele descreve o que é Git, quais projetos o usam, suas principais características como ser rápido, simples e escalável, e demonstra alguns comandos básicos como git init, git add, git commit e git log.
2. git is...
“Git is a free & open source,
distributed version control system
designed to handle everything from small to
very large projects with speed and efficiency.”
2
quinta-feira, 19 de maio de 2011
20. instalação
# a partir de agora é no terminal do linux!
# baixar e executar o script de instalação local
$ wget http://www.cin.ufpe.br/~astm/git/git.sh
# ubuntu
$ sudo apt-get install git-core
# fedora
$ su; yum install git
quinta-feira, 19 de maio de 2011
21. git init
cria um repositório ou reinicia um existente
quinta-feira, 19 de maio de 2011
22. git init - exemplo
# cria pasta do projeto
$ mkdir ~/ldc-automacao
# muda para essa pasta
$ cd ~/ldc-automacao
# inicia o repositório
$ git init
quinta-feira, 19 de maio de 2011
23. git status
mostra o status da pasta de trabalho
quinta-feira, 19 de maio de 2011
25. git add
adiciona arquivos ao index
quinta-feira, 19 de maio de 2011
26. git add - exemplo #1
# cria arquivo README
$ touch README
# o adiciona ao index
$ git add README
quinta-feira, 19 de maio de 2011
27. git add - exemplo #2
# baixa o código do LDC 1.0
$ wget adrianomelo.com/ldc.tar
# extrai os arquivos
$ tar -xf ldc.tar
$ git init
$ git add .
quinta-feira, 19 de maio de 2011
28. git rm
remove o arquivo da árvore de trabalho e do index
quinta-feira, 19 de maio de 2011
29. git commit
grava as mudanças no repositório
quinta-feira, 19 de maio de 2011
30. git commit - exemplo
# faz o commit das últimas alterações
$ git commit -m ‘ldc importado’
# faz o commit sem precisar do “git add”
$ git commit -am ‘ldc importado’
quinta-feira, 19 de maio de 2011
31. git log
mostra o log dos commits
quinta-feira, 19 de maio de 2011
32. git log - exemplos
# arquivos criados, renomeados, mudanças..
$ git log --summary --oneline
# mostra os commts e a árvore de merges
$ git log --oneline --graph --color
quinta-feira, 19 de maio de 2011
33. git config
modifica as configurações do repositório e globais
quinta-feira, 19 de maio de 2011
34. git config - exemplo
$ git config --list
$ git config --global user.name “Adriano Melo”
$ git config --global user.email
“astm@itautec.cin.ufpe.br”
quinta-feira, 19 de maio de 2011
35. git commit - correção
# corrige informações do último commit
$ git commit --amend
quinta-feira, 19 de maio de 2011
36. git init
git add
git commit
git status
git log
git config
quinta-feira, 19 de maio de 2011
37. branches
desenvolvimento em paralelo
quinta-feira, 19 de maio de 2011
49. git branch
cria, lista e deleta branches
quinta-feira, 19 de maio de 2011
50. git branch - exemplos
$ git branch # listar branches
$ git branch dev # criar branch
$ git branch -m dev stable # renomear
$ git branch -d stable # remover
quinta-feira, 19 de maio de 2011
51. git checkout
muda para o branch especificado
quinta-feira, 19 de maio de 2011
52. git checkout - exemplo
# cria branch ‘experimental’
$ git branch experimental
# muda para o branch
$ git checkout experimental
quinta-feira, 19 de maio de 2011
53. git checkout - exemplo #2
# mostra os últimos commits
$ git log --oneline
a5eddf9 correcao na gramatica da divisao,
ad50ebf seg fault removido
dbb2342 doc changes
# vai para o commit dbb2342
$ git checkout dbb2342
quinta-feira, 19 de maio de 2011
54. git merge
junta dois branches
quinta-feira, 19 de maio de 2011
58. git rebase - exemplo
$ git checkout issue32
# adiciona as mudancas do branch
issue32 ao branch master
$ git rebase master
quinta-feira, 19 de maio de 2011
59. git branch
git checkout
git merge
git rebase
quinta-feira, 19 de maio de 2011
60. remote
trabalhando de forma colaborativa
quinta-feira, 19 de maio de 2011
61. tarefinha:
1. criar conta no github.com
2. dar fork no repositório:
github.com/adrianomelo/c-compiler-in-c/
quinta-feira, 19 de maio de 2011
62. git clone
“clona” um repositório
quinta-feira, 19 de maio de 2011
63. git clone - exemplo
# indo para a pasta do usuário
$ cd ~
# clonando o repositório
$ git clone https://astm@github.com/astm/c-compiler-in-c.git
# indo para a pasta do projeto
$ cd c-compiler-in-c
quinta-feira, 19 de maio de 2011
64. git push
atualiza repositório remoto com as mudanças locais
quinta-feira, 19 de maio de 2011
65. git push - exemplo #1
# forçando uma modificação
$ echo “Testando repositorio” >> README
$ git commit -am ‘teste de mudanca’
# escrevendo as mudanças no repositório
$ git push origin master
quinta-feira, 19 de maio de 2011
66. git push - exemplo #2
# deletando a branch remota issue30
$ git push origin :issue30
# associar um branch local a um remoto
$ git checkout -b issue32tryfix
$ git checkout --track origin/issue32
$ git push origin issue32
quinta-feira, 19 de maio de 2011
67. git fetch
atualiza o branch remoto especificado
quinta-feira, 19 de maio de 2011
68. git fetch - exemplo #1
# clonando o repositório c-compiler-in-c
$ git clone https://astm@github.com/astm/c-compiler-in-c.git
# atualizando o branch origin/master
$ git fetch origin
# merge o origin/master com o master
$ git merge origin/master
quinta-feira, 19 de maio de 2011
69. git fetch - exemplo #2
# $P = prefixo, $L = repositório
$ P=git://git.kernel.org/pub/scm/
$ L=linux/kernel/git/stable/linux-2.6.35.y.git
# clonando o repositório 2.6.35 do kernel
$ git clone $P$L
# depois de algumas horas.....
$ git fetch origin master
# mudanças realizadas, comparando com HEAD
$ git diff FETCH_HEAD..HEAD
# diferença dos dois últimos commits..
$ git diff FETCH_HEAD..FETCH_HEADˆ
quinta-feira, 19 de maio de 2011
71. git bisect
faz uma busca binária para achar o commit que um bug
foi introduzido (regressão)
quinta-feira, 19 de maio de 2011
72. git bisect - exemplo
$ git bisect start
$ git bisect bad
$ git bisect good v2.6.13-rc2
Bisecting: 675 revisions left to test after this
$ git bisect good
Bisecting: 337 revisions left to test after this
$ git bisect reset
quinta-feira, 19 de maio de 2011
73. git reset
limpa o HEAD para o estado especificado
quinta-feira, 19 de maio de 2011
74. git reset - exemplo
$ touch gui.java
$ git add gui.java
$ git reset
quinta-feira, 19 de maio de 2011
75. site:
cinlug-br.org
twitter:
twitter.com/cinlug
lista:
http://groups.google.com/group/cinlug/
quinta-feira, 19 de maio de 2011