git 101
TRANSCRIPT
git
1
quinta-feira, 19 de maio de 2011
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
quem usa?
3
quinta-feira, 19 de maio de 2011
4
perl
gnome
Qt
RoR
android
fedoradebian
VLCfacebook INdT
Itautec (new)
linux kernel
quinta-feira, 19 de maio de 2011
5
linux kernelalguns números...
quinta-feira, 19 de maio de 2011
6
quinta-feira, 19 de maio de 2011
7
quinta-feira, 19 de maio de 2011
8
quinta-feira, 19 de maio de 2011
9
quinta-feira, 19 de maio de 2011
características
quinta-feira, 19 de maio de 2011
11
rápido
quinta-feira, 19 de maio de 2011
12
simples
quinta-feira, 19 de maio de 2011
escalável
13
quinta-feira, 19 de maio de 2011
distribuído
14
quinta-feira, 19 de maio de 2011
localcentralizadodistribuído
15
quinta-feira, 19 de maio de 2011
local
16
quinta-feira, 19 de maio de 2011
centralizado
17
quinta-feira, 19 de maio de 2011
distribuído
18
quinta-feira, 19 de maio de 2011
git 101
quinta-feira, 19 de maio de 2011
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
git initcria um repositório ou reinicia um existente
quinta-feira, 19 de maio de 2011
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
git statusmostra o status da pasta de trabalho
quinta-feira, 19 de maio de 2011
quinta-feira, 19 de maio de 2011
git addadiciona arquivos ao index
quinta-feira, 19 de maio de 2011
git add - exemplo #1
# cria arquivo README$ touch README# o adiciona ao index$ git add README
quinta-feira, 19 de maio de 2011
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
git rmremove o arquivo da árvore de trabalho e do index
quinta-feira, 19 de maio de 2011
git commitgrava as mudanças no repositório
quinta-feira, 19 de maio de 2011
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
git logmostra o log dos commits
quinta-feira, 19 de maio de 2011
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
git configmodifica as configurações do repositório e globais
quinta-feira, 19 de maio de 2011
git config - exemplo
$ git config --list
$ git config --global user.name “Adriano Melo”$ git config --global user.email \ “[email protected]”
quinta-feira, 19 de maio de 2011
git commit - correção
# corrige informações do último commit$ git commit --amend
quinta-feira, 19 de maio de 2011
git initgit add
git commitgit status
git loggit config
quinta-feira, 19 de maio de 2011
branchesdesenvolvimento em paralelo
quinta-feira, 19 de maio de 2011
ao dar commit...quinta-feira, 19 de maio de 2011
depois de alguns commits..quinta-feira, 19 de maio de 2011
branch == ponteiroquinta-feira, 19 de maio de 2011
novo branch (testing)quinta-feira, 19 de maio de 2011
master em uso (HEAD)quinta-feira, 19 de maio de 2011
testing em uso (HEAD)quinta-feira, 19 de maio de 2011
commit em testingquinta-feira, 19 de maio de 2011
usando master novamente...
quinta-feira, 19 de maio de 2011
commit em masterquinta-feira, 19 de maio de 2011
um branch em git é um arquivoque contém 40 caracteres.
(SHA-1 checksum do commit que ele aponta)
quinta-feira, 19 de maio de 2011
quinta-feira, 19 de maio de 2011
git branchcria, lista e deleta branches
quinta-feira, 19 de maio de 2011
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
git checkoutmuda para o branch especificado
quinta-feira, 19 de maio de 2011
git checkout - exemplo
# cria branch ‘experimental’$ git branch experimental
# muda para o branch$ git checkout experimental
quinta-feira, 19 de maio de 2011
git checkout - exemplo #2
# mostra os últimos commits$ git log --onelinea5eddf9 correcao na gramatica da divisao,ad50ebf seg fault removidodbb2342 doc changes
# vai para o commit dbb2342$ git checkout dbb2342
quinta-feira, 19 de maio de 2011
git mergejunta dois branches
quinta-feira, 19 de maio de 2011
git merge - exemplo$ git checkout -b documentacao
$ touch INSTALL$ git add INSTALL$ git commit -m ‘arquivo INSTALL criado’
$ git checkout master$ git merge documentacao
quinta-feira, 19 de maio de 2011
git rebaseintegrar mudanças de uma branch à ultima versão de
outra
quinta-feira, 19 de maio de 2011
quinta-feira, 19 de maio de 2011
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
git branchgit checkout
git mergegit rebase
quinta-feira, 19 de maio de 2011
remotetrabalhando de forma colaborativa
quinta-feira, 19 de maio de 2011
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
git clone“clona” um repositório
quinta-feira, 19 de maio de 2011
git clone - exemplo
# indo para a pasta do usuário$ cd ~# clonando o repositório$ git clone https://[email protected]/astm/c-compiler-in-c.git
# indo para a pasta do projeto$ cd c-compiler-in-c
quinta-feira, 19 de maio de 2011
git pushatualiza repositório remoto com as mudanças locais
quinta-feira, 19 de maio de 2011
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
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
git fetchatualiza o branch remoto especificado
quinta-feira, 19 de maio de 2011
git fetch - exemplo #1
# clonando o repositório c-compiler-in-c$ git clone https://[email protected]/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
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
outros comandos..
quinta-feira, 19 de maio de 2011
git bisectfaz uma busca binária para achar o commit que um bug
foi introduzido (regressão)
quinta-feira, 19 de maio de 2011
git bisect - exemplo$ git bisect start$ git bisect bad$ git bisect good v2.6.13-rc2Bisecting: 675 revisions left to test after this
$ git bisect goodBisecting: 337 revisions left to test after this
$ git bisect reset
quinta-feira, 19 de maio de 2011
git resetlimpa o HEAD para o estado especificado
quinta-feira, 19 de maio de 2011
git reset - exemplo
$ touch gui.java$ git add gui.java
$ git reset
quinta-feira, 19 de maio de 2011
site:cinlug-br.org
twitter:twitter.com/cinlug
lista:http://groups.google.com/group/cinlug/
quinta-feira, 19 de maio de 2011