git 101

75
git 1 quinta-feira, 19 de maio de 2011

Upload: adriano-melo

Post on 21-Aug-2015

506 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: git 101

git

1

quinta-feira, 19 de maio de 2011

Page 2: git 101

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

Page 3: git 101

quem usa?

3

quinta-feira, 19 de maio de 2011

Page 4: git 101

4

perl

gnome

Qt

RoR

android

fedoradebian

VLCfacebook INdT

Itautec (new)

linux kernel

quinta-feira, 19 de maio de 2011

Page 5: git 101

5

linux kernelalguns números...

quinta-feira, 19 de maio de 2011

Page 6: git 101

6

quinta-feira, 19 de maio de 2011

Page 7: git 101

7

quinta-feira, 19 de maio de 2011

Page 8: git 101

8

quinta-feira, 19 de maio de 2011

Page 9: git 101

9

quinta-feira, 19 de maio de 2011

Page 10: git 101

características

quinta-feira, 19 de maio de 2011

Page 11: git 101

11

rápido

quinta-feira, 19 de maio de 2011

Page 12: git 101

12

simples

quinta-feira, 19 de maio de 2011

Page 13: git 101

escalável

13

quinta-feira, 19 de maio de 2011

Page 14: git 101

distribuído

14

quinta-feira, 19 de maio de 2011

Page 15: git 101

localcentralizadodistribuído

15

quinta-feira, 19 de maio de 2011

Page 16: git 101

local

16

quinta-feira, 19 de maio de 2011

Page 17: git 101

centralizado

17

quinta-feira, 19 de maio de 2011

Page 18: git 101

distribuído

18

quinta-feira, 19 de maio de 2011

Page 19: git 101

git 101

quinta-feira, 19 de maio de 2011

Page 20: git 101

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

Page 21: git 101

git initcria um repositório ou reinicia um existente

quinta-feira, 19 de maio de 2011

Page 22: git 101

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

Page 23: git 101

git statusmostra o status da pasta de trabalho

quinta-feira, 19 de maio de 2011

Page 24: git 101

quinta-feira, 19 de maio de 2011

Page 25: git 101

git addadiciona arquivos ao index

quinta-feira, 19 de maio de 2011

Page 26: git 101

git add - exemplo #1

# cria arquivo README$ touch README# o adiciona ao index$ git add README

quinta-feira, 19 de maio de 2011

Page 27: git 101

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

Page 28: git 101

git rmremove o arquivo da árvore de trabalho e do index

quinta-feira, 19 de maio de 2011

Page 29: git 101

git commitgrava as mudanças no repositório

quinta-feira, 19 de maio de 2011

Page 30: git 101

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

Page 31: git 101

git logmostra o log dos commits

quinta-feira, 19 de maio de 2011

Page 32: git 101

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

Page 33: git 101

git configmodifica as configurações do repositório e globais

quinta-feira, 19 de maio de 2011

Page 34: git 101

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

Page 35: git 101

git commit - correção

# corrige informações do último commit$ git commit --amend

quinta-feira, 19 de maio de 2011

Page 36: git 101

git initgit add

git commitgit status

git loggit config

quinta-feira, 19 de maio de 2011

Page 37: git 101

branchesdesenvolvimento em paralelo

quinta-feira, 19 de maio de 2011

Page 38: git 101

ao dar commit...quinta-feira, 19 de maio de 2011

Page 39: git 101

depois de alguns commits..quinta-feira, 19 de maio de 2011

Page 40: git 101

branch == ponteiroquinta-feira, 19 de maio de 2011

Page 41: git 101

novo branch (testing)quinta-feira, 19 de maio de 2011

Page 42: git 101

master em uso (HEAD)quinta-feira, 19 de maio de 2011

Page 43: git 101

testing em uso (HEAD)quinta-feira, 19 de maio de 2011

Page 44: git 101

commit em testingquinta-feira, 19 de maio de 2011

Page 45: git 101

usando master novamente...

quinta-feira, 19 de maio de 2011

Page 46: git 101

commit em masterquinta-feira, 19 de maio de 2011

Page 47: git 101

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

Page 48: git 101

quinta-feira, 19 de maio de 2011

Page 49: git 101

git branchcria, lista e deleta branches

quinta-feira, 19 de maio de 2011

Page 50: git 101

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

Page 51: git 101

git checkoutmuda para o branch especificado

quinta-feira, 19 de maio de 2011

Page 52: git 101

git checkout - exemplo

# cria branch ‘experimental’$ git branch experimental

# muda para o branch$ git checkout experimental

quinta-feira, 19 de maio de 2011

Page 53: git 101

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

Page 54: git 101

git mergejunta dois branches

quinta-feira, 19 de maio de 2011

Page 55: git 101

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

Page 56: git 101

git rebaseintegrar mudanças de uma branch à ultima versão de

outra

quinta-feira, 19 de maio de 2011

Page 57: git 101

quinta-feira, 19 de maio de 2011

Page 58: git 101

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

Page 59: git 101

git branchgit checkout

git mergegit rebase

quinta-feira, 19 de maio de 2011

Page 60: git 101

remotetrabalhando de forma colaborativa

quinta-feira, 19 de maio de 2011

Page 61: git 101

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

Page 62: git 101

git clone“clona” um repositório

quinta-feira, 19 de maio de 2011

Page 63: git 101

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

Page 64: git 101

git pushatualiza repositório remoto com as mudanças locais

quinta-feira, 19 de maio de 2011

Page 65: git 101

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

Page 66: git 101

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

Page 67: git 101

git fetchatualiza o branch remoto especificado

quinta-feira, 19 de maio de 2011

Page 68: git 101

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

Page 69: git 101

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

Page 70: git 101

outros comandos..

quinta-feira, 19 de maio de 2011

Page 71: git 101

git bisectfaz uma busca binária para achar o commit que um bug

foi introduzido (regressão)

quinta-feira, 19 de maio de 2011

Page 72: git 101

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

Page 73: git 101

git resetlimpa o HEAD para o estado especificado

quinta-feira, 19 de maio de 2011

Page 74: git 101

git reset - exemplo

$ touch gui.java$ git add gui.java

$ git reset

quinta-feira, 19 de maio de 2011

Page 75: git 101

site:cinlug-br.org

twitter:twitter.com/cinlug

lista:http://groups.google.com/group/cinlug/

quinta-feira, 19 de maio de 2011