intro to git

229
Conceitos Reposit´ orio Usando GIT Git o b´ asico Marcello Henrique, [email protected] Brasil/Goi´ as - UFG 23 de Outubro de 2008 Marcello Henrique, [email protected] Git o b´ asico 1 / 84

Upload: marcello-henrique

Post on 21-Aug-2015

2.752 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Intro To Git

ConceitosRepositorioUsando GIT

Git o basico

Marcello Henrique, [email protected]

Brasil/Goias - UFG

23 de Outubro de 2008

Marcello Henrique, [email protected] Git o basico 1 / 84

Page 2: Intro To Git

ConceitosRepositorioUsando GIT

1 ConceitosSource Control ManagerDecentralizacaoHistoria

2 RepositorioEstruturaObjetos

3 Usando GITComandosBranchingRemotes

Marcello Henrique, [email protected] Git o basico 2 / 84

Page 3: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Conceitos

Gerenciamento de Codigo Fonte

Controle nas mudancas dos arquivosRepositorio / base de dados das mudancasDiretorio de trabalho / estado atual

Modelo Centralizado

Servidor: simples base de dadosCliente: diretorio de trabalho & estado

Modelo Descentralizado

Qualquer um pode ser o servidorRepositorio acoplado ao diretorio de trabalhoHistorico completoTrabalho desconectado

Marcello Henrique, [email protected] Git o basico 3 / 84

Page 4: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Conceitos

Gerenciamento de Codigo Fonte

Controle nas mudancas dos arquivosRepositorio / base de dados das mudancasDiretorio de trabalho / estado atual

Modelo Centralizado

Servidor: simples base de dadosCliente: diretorio de trabalho & estado

Modelo Descentralizado

Qualquer um pode ser o servidorRepositorio acoplado ao diretorio de trabalhoHistorico completoTrabalho desconectado

Marcello Henrique, [email protected] Git o basico 3 / 84

Page 5: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Conceitos

Gerenciamento de Codigo Fonte

Controle nas mudancas dos arquivosRepositorio / base de dados das mudancasDiretorio de trabalho / estado atual

Modelo Centralizado

Servidor: simples base de dadosCliente: diretorio de trabalho & estado

Modelo Descentralizado

Qualquer um pode ser o servidorRepositorio acoplado ao diretorio de trabalhoHistorico completoTrabalho desconectado

Marcello Henrique, [email protected] Git o basico 3 / 84

Page 6: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Arvore de trabalho

diretorios

arquivos

Marcello Henrique, [email protected] Git o basico 4 / 84

Page 7: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Repositorio de conteudo

arquivos

a.cv1

Marcello Henrique, [email protected] Git o basico 5 / 84

Page 8: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Repositorio de conteudo

arquivos

commits

a.cv1

b.cv9

metadata

Marcello Henrique, [email protected] Git o basico 5 / 84

Page 9: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Repositorio de conteudo

arquivos

commits

ancentrais

A

B C

E

tim

e

D

Marcello Henrique, [email protected] Git o basico 5 / 84

Page 10: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Directed Acyclic Graph “DAG”

A

B C

D

EG

F

H

Marcello Henrique, [email protected] Git o basico 6 / 84

Page 11: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Referencias

tags

A v1.4.4

B C

D

E

v1.5.0

G

F

H

Marcello Henrique, [email protected] Git o basico 7 / 84

Page 12: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Referencias

tags

branches

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

Marcello Henrique, [email protected] Git o basico 7 / 84

Page 13: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

HEAD

atual checkout

pontos para branch

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

Marcello Henrique, [email protected] Git o basico 7 / 84

Page 14: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

HEAD

atual checkout

pontos para branch

muitas vezes solto

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

Marcello Henrique, [email protected] Git o basico 7 / 84

Page 15: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Indice

“staging area”

O que esta para sercomitado

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

index

HEAD

Marcello Henrique, [email protected] Git o basico 7 / 84

Page 16: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM operacoes I

Inicializacao

init

checkout

branch

Modificacao

add, delete, rename

commit

Informacao

status

diff

log

Marcello Henrique, [email protected] Git o basico 8 / 84

Page 17: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM operacoes II

Referencias

tag

branch

Marcello Henrique, [email protected] Git o basico 9 / 84

Page 18: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM Centralizado

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

diff

log

update

checkout

commit

operacoes requerem servidor

ponto de falha, funilamento

Marcello Henrique, [email protected] Git o basico 10 / 84

Page 19: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM Decentralizado

pull

pushA v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

clone

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

pull

push

clo

ne

pull

pushclo

ne

qualquer um pode ser o servidor

Marcello Henrique, [email protected] Git o basico 11 / 84

Page 20: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Operacoes SCM

Decentralizado

clone

pull, fetch

push

Marcello Henrique, [email protected] Git o basico 12 / 84

Page 21: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream

Repositorio publico

Marcello Henrique, [email protected] Git o basico 13 / 84

Page 22: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream

local

Fazendo um clone local

Marcello Henrique, [email protected] Git o basico 13 / 84

Page 23: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream

pristine

topic Atopic B

Clonar na rede local e mais leve

Marcello Henrique, [email protected] Git o basico 13 / 84

Page 24: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream

pristine

topic Atopic B

Empurando mudancas entre repositorios

Marcello Henrique, [email protected] Git o basico 13 / 84

Page 25: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream web server

pristine

topic Atopic B

Enviando mudancas para servidores publicos

Marcello Henrique, [email protected] Git o basico 13 / 84

Page 26: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream web server

pristine

topic Atopic B

another

Compartilhando mudancas com redes confiaveis

Marcello Henrique, [email protected] Git o basico 13 / 84

Page 27: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao pode ser bom?

Micro commits nao intrusivos

Operacao de destacar

Nao ha pontos simples de falhas

Backups sao banais

Marcello Henrique, [email protected] Git o basico 14 / 84

Page 28: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Historia do GIT

2002Linus usa BitKeeper para versionar o LinuxBK e o melhorDesenvolvimento do Linux escala melhor

April 6, 2005Vence a licenca do BitMoverLinus cria seu proprio SCM, “o GIT”

April 18, 2005GIT pode fundir codigos, “merge”

June 16, 2005GIT e oficialmente usado para versionar o codigo doLinux

Feb 14, 2007GIT 1.5.0 e lancado, focando usabilidade

Marcello Henrique, [email protected] Git o basico 15 / 84

Page 29: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Historia do GIT

2002Linus usa BitKeeper para versionar o LinuxBK e o melhorDesenvolvimento do Linux escala melhor

April 6, 2005Vence a licenca do BitMoverLinus cria seu proprio SCM, “o GIT”

April 18, 2005GIT pode fundir codigos, “merge”

June 16, 2005GIT e oficialmente usado para versionar o codigo doLinux

Feb 14, 2007GIT 1.5.0 e lancado, focando usabilidade

Marcello Henrique, [email protected] Git o basico 15 / 84

Page 30: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Historia do GIT

2002Linus usa BitKeeper para versionar o LinuxBK e o melhorDesenvolvimento do Linux escala melhor

April 6, 2005Vence a licenca do BitMoverLinus cria seu proprio SCM, “o GIT”

April 18, 2005GIT pode fundir codigos, “merge”

June 16, 2005GIT e oficialmente usado para versionar o codigo doLinux

Feb 14, 2007GIT 1.5.0 e lancado, focando usabilidade

Marcello Henrique, [email protected] Git o basico 15 / 84

Page 31: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Historia do GIT

2002Linus usa BitKeeper para versionar o LinuxBK e o melhorDesenvolvimento do Linux escala melhor

April 6, 2005Vence a licenca do BitMoverLinus cria seu proprio SCM, “o GIT”

April 18, 2005GIT pode fundir codigos, “merge”

June 16, 2005GIT e oficialmente usado para versionar o codigo doLinux

Feb 14, 2007GIT 1.5.0 e lancado, focando usabilidade

Marcello Henrique, [email protected] Git o basico 15 / 84

Page 32: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Historia do GIT

2002Linus usa BitKeeper para versionar o LinuxBK e o melhorDesenvolvimento do Linux escala melhor

April 6, 2005Vence a licenca do BitMoverLinus cria seu proprio SCM, “o GIT”

April 18, 2005GIT pode fundir codigos, “merge”

June 16, 2005GIT e oficialmente usado para versionar o codigo doLinux

Feb 14, 2007GIT 1.5.0 e lancado, focando usabilidade

Marcello Henrique, [email protected] Git o basico 15 / 84

Page 33: Intro To Git

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

GIT gets better

And then realize that nothing is perfect. Git is just

*closer* to perfect than any other SCM out there.

−−Linus

Marcello Henrique, [email protected] Git o basico 16 / 84

Page 34: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Estrutura

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

repository

O historico

Marcello Henrique, [email protected] Git o basico 17 / 84

Page 35: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Estrutura

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

repository index100644 20b024 0 bar100644 1d52a6 0 baz100644 20b024 0 sub/fiz100644 43dbe0 0 sub/foo

ındices

Marcello Henrique, [email protected] Git o basico 17 / 84

Page 36: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Estrutura

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

repository index work tree100644 20b024 0 bar100644 1d52a6 0 baz100644 20b024 0 sub/fiz100644 43dbe0 0 sub/foo

.|−− bar|−− baz‘−− sub |−− fiz ‘−− foo

arquivos editaveis

Marcello Henrique, [email protected] Git o basico 17 / 84

Page 37: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Estrutura

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

repository index work tree100644 20b024 0 bar100644 1d52a6 0 baz100644 20b024 0 sub/fiz100644 43dbe0 0 sub/foo

.|−− bar|−− baz‘−− sub |−− fiz ‘−− foo

“staging”: add, remove, rename

Marcello Henrique, [email protected] Git o basico 17 / 84

Page 38: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Estrutura

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

repository index work tree100644 20b024 0 bar100644 1d52a6 0 baz100644 20b024 0 sub/fiz100644 43dbe0 0 sub/foo

.|−− bar|−− baz‘−− sub |−− fiz ‘−− foo

“committing”: commit

Marcello Henrique, [email protected] Git o basico 17 / 84

Page 39: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Estrutura

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

repository index work tree100644 20b024 0 bar100644 1d52a6 0 baz100644 20b024 0 sub/fiz100644 43dbe0 0 sub/foo

.|−− bar|−− baz‘−− sub |−− fiz ‘−− foo

“reading tree”: checkout, read-tree, reset

Marcello Henrique, [email protected] Git o basico 17 / 84

Page 40: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Estrutura

A v1.4.4

B C

D

E

v1.5.0

G

F

testing

release

topicA

H

HEAD

repository index work tree100644 20b024 0 bar100644 1d52a6 0 baz100644 20b024 0 sub/fiz100644 43dbe0 0 sub/foo

.|−− bar|−− baz‘−− sub |−− fiz ‘−− foo

“checking out”: checkout, checkout-index, reset

Marcello Henrique, [email protected] Git o basico 17 / 84

Page 41: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

O repositorio.git

|-- HEAD referencia atual do checkout|-- config arquivo de configuracao do repositorio|-- description arquivo de descricao do repositorio|-- hooks

| ‘-- ... scripts de ganchos|-- index mudancas para commit|-- info

| |-- exclude configuracao de arquivos para nao versionamento| ‘-- refs refs?|-- logs

| ‘-- ... “reflog” dados|-- objects

| |-- XX

| | ‘-- ... objetos perdidos| |-- info

| | ‘-- packs informacoes sobre pacotes| ‘-- pack

| ‘-- ... pacotes e ındeces‘-- refs

|-- heads

| ‘-- master ramo master‘-- tags

‘-- ... etiquetasMarcello Henrique, [email protected] Git o basico 18 / 84

Page 42: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

O repositorio

.git/config

Configuracao do repositorio

.git/description

Descricao do repositorioMuito usado pelo gitweb

.git/info/exclude

Padroes para ignorar arquivos

Marcello Henrique, [email protected] Git o basico 19 / 84

Page 43: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

.git/objects

|-- 23

| ‘-- d4bd826aba9e29aaace9411cc175b784edc399

|-- 76

| ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3

|-- c4

| ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc

|-- e7

| ‘-- 4be61128eef713459ca4e32398d689fe80864e

|-- info

| ‘-- packs

‘-- pack

|-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx

‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack

Marcello Henrique, [email protected] Git o basico 20 / 84

Page 44: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

.git/objects

|-- 23

| ‘-- d4bd826aba9e29aaace9411cc175b784edc399

|-- 76

| ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3

|-- c4

| ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc

|-- e7

| ‘-- 4be61128eef713459ca4e32398d689fe80864e

|-- info

| ‘-- packs

‘-- pack

|-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx

‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack

“Objetos perdidos”

Marcello Henrique, [email protected] Git o basico 21 / 84

Page 45: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

.git/objects

|-- 23

| ‘-- d4bd826aba9e29aaace9411cc175b784edc399

|-- 76

| ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3

|-- c4

| ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc

|-- e7

| ‘-- 4be61128eef713459ca4e32398d689fe80864e

|-- info

| ‘-- packs

‘-- pack

|-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx

‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack

“pack arquivo”

Marcello Henrique, [email protected] Git o basico 22 / 84

Page 46: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Conteudo enderecavel

type size

data

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 47: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Conteudo enderecavel

type size

data

SH

A1

52a0ff44aba8599f43a5d821c421af316cb7305

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 48: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Conteudo enderecavel

type size

data

52a0ff44aba8599f43a5d821c421af316cb7305

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 49: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Conteudo enderecavel type size

data

52a0ff44aba8599f43a5d821c421af316cb73051

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 50: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

"blob" size

file data

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 51: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

Trees"tree" size

040000 tree 205f6b... somedir

100644 blob 9daeaf... somefile

"tree" size

040000 blob 257cc5... other

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 52: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

Trees"tree" size

040000 tree 205f6b... somedir

100644 blob 9daeaf... somefile

"tree" size

040000 blob 257cc5... other

"blob" size

file data

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 53: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

Trees"tree" size

040000 tree 205f6b... somedir

100644 blob 9daeaf... somefile

"tree" size

040000 blob 257cc5... other

"blob" size

file data

"blob" size

file data

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 54: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

Trees

Commits"commit" size

tree cad6ae...

parent 6f0104...

author Someone <address>

comitter Another <address>

commit message

"tree" size

040000 blob 257cc5... other

"blob" size

file data

"blob" size

"tree" size

040000 tree 205f6b... somedir

100644 blob 9daeaf... somefile

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 55: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

Trees

Commits"commit" size

tree cad6ae...

parent 6f0104...

author Someone <address>

comitter Another <address>

commit message

"tree" size

040000 blob 257cc5... other

"blob" size

file data

"blob" size

file data

"tree" size

040000 tree 205f6b... somedir

100644 blob 9daeaf... somefile

"commit" size

tree cad6ae...

parent 6f0104...

author Someone <address>

comitter Another <address>

commit message

"tree" size

040000 blob 257cc5... other

"blob" size

file data

"blob" size

file data

"tree" size

040000 tree 205f6b... somedir

100644 blob 9daeaf... somefile

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 56: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

Trees

Commits"commit" size

tree cad6ae...

parent 6f0104...

author Someone <address>

comitter Another <address>

commit message

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 57: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

Trees

Commits

Tags

"tag" size

object cad6ae...

type commit

tag tag−name

tagger Who <address> + date

tag message

"commit" size

tree cad6ae...

parent 6f0104...

author Someone <address>

comitter Another <address>

commit message

"tree" size

040000 blob 257cc5... other

"blob" size

file data

"blob" size

file data

"tree" size

040000 tree 205f6b... somedir

100644 blob 9daeaf... somefile

"commit" size

tree cad6ae...

parent 6f0104...

author Someone <address>

comitter Another <address>

commit message

"tree" size

040000 blob 257cc5... other

"blob" size

file data

"blob" size

file data

"tree" size

040000 tree 205f6b... somedir

100644 blob 9daeaf... somefile

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 58: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Imutavel

type size

data

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 59: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Imutavel

type size

data

type size

data’

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 60: Intro To Git

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Imutavel

type size

data

type size

data’

SH

A1

8a9fd66b8bb939638564ebfdecc23b5d58070fc8

Marcello Henrique, [email protected] Git o basico 23 / 84

Page 61: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

ComandosSintaxe

$ git <options> <command> <options>

Marcello Henrique, [email protected] Git o basico 24 / 84

Page 62: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

add fast-export merge-one-file revert

am fast-import merge-resolve rm

annotate fetch merge-subtree send-email

apply fetch-pack merge-tree send-pack

archimport filter-branch mergetool sh-setup

archive fmt-merge-msg mktag shell

bisect for-each-ref mktree shortlog

blame format-patch mv show

branch fsck name-rev show-branch

bundle fsck-objects pack-objects show-index

cat-file gc pack-redundant show-ref

check-attr get-tar-commit-id pack-refs stash

check-ref-format grep parse-remote status

checkout gui patch-id stripspace

checkout-index hash-object peek-remote submodule

cherry http-fetch prune svn

cherry-pick http-push prune-packed symbolic-ref

citool imap-send pull tag

clean index-pack push tar-tree

clone init quiltimport unpack-file

commit init-db read-tree unpack-objects

commit-tree instaweb rebase update-index

config log receive-pack update-ref

count-objects lost-found reflog update-server-info

cvsexportcommit ls-files relink upload-archive

cvsimport ls-remote remote upload-pack

cvsserver ls-tree repack var

daemon mailinfo repo-config verify-pack

describe mailsplit request-pull verify-tag

diff merge rerere whatchanged

diff-files merge-base reset write-tree

diff-index merge-file rev-list

diff-tree merge-index rev-parse gitk

Marcello Henrique, [email protected] Git o basico 25 / 84

Page 63: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

add fast-export merge-one-file revert

am fast-import merge-resolve rm

annotate fetch merge-subtree send-email

apply fetch-pack merge-tree send-pack

archimport filter-branch mergetool sh-setup

archive fmt-merge-msg mktag shell

bisect for-each-ref mktree shortlog

blame format-patch mv show

branch fsck name-rev show-branch

bundle fsck-objects pack-objects show-index

cat-file gc pack-redundant show-ref

check-attr get-tar-commit-id pack-refs stash

check-ref-format grep parse-remote status

checkout gui patch-id stripspace

checkout-index hash-object peek-remote submodule

cherry http-fetch prune svn

cherry-pick http-push prune-packed symbolic-ref

citool imap-send pull tag

clean index-pack push tar-tree

clone init quiltimport unpack-file

commit init-db read-tree unpack-objects

commit-tree instaweb rebase update-index

config log receive-pack update-ref

count-objects lost-found reflog update-server-info

cvsexportcommit ls-files relink upload-archive

cvsimport ls-remote remote upload-pack

cvsserver ls-tree repack var

daemon mailinfo repo-config verify-pack

describe mailsplit request-pull verify-tag

diff merge rerere whatchanged

diff-files merge-base reset write-tree

diff-index merge-file rev-list

diff-tree merge-index rev-parse gitk

Marcello Henrique, [email protected] Git o basico 26 / 84

Page 64: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

add fast-export merge-one-file revert

am fast-import merge-resolve rm

annotate fetch merge-subtree send-email

apply fetch-pack merge-tree send-pack

archimport filter-branch mergetool sh-setup

archive fmt-merge-msg mktag shell

bisect for-each-ref mktree shortlog

blame format-patch mv show

branch fsck name-rev show-branch

bundle fsck-objects pack-objects show-index

cat-file gc pack-redundant show-ref

check-attr get-tar-commit-id pack-refs stash

check-ref-format grep parse-remote status

checkout gui patch-id stripspace

checkout-index hash-object peek-remote submodule

cherry http-fetch prune svn

cherry-pick http-push prune-packed symbolic-ref

citool imap-send pull tag

clean index-pack push tar-tree

clone init quiltimport unpack-file

commit init-db read-tree unpack-objects

commit-tree instaweb rebase update-index

config log receive-pack update-ref

count-objects lost-found reflog update-server-info

cvsexportcommit ls-files relink upload-archive

cvsimport ls-remote remote upload-pack

cvsserver ls-tree repack var

daemon mailinfo repo-config verify-pack

describe mailsplit request-pull verify-tag

diff merge rerere whatchanged

diff-files merge-base reset write-tree

diff-index merge-file rev-list

diff-tree merge-index rev-parse gitk

Marcello Henrique, [email protected] Git o basico 27 / 84

Page 65: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

add fast-export merge-one-file revert

am fast-import merge-resolve rm

annotate fetch merge-subtree send-email

apply fetch-pack merge-tree send-pack

archimport filter-branch mergetool sh-setup

archive fmt-merge-msg mktag shell

bisect for-each-ref mktree shortlog

blame format-patch mv show

branch fsck name-rev show-branch

bundle fsck-objects pack-objects show-index

cat-file gc pack-redundant show-ref

check-attr get-tar-commit-id pack-refs stash

check-ref-format grep parse-remote status

checkout gui patch-id stripspace

checkout-index hash-object peek-remote submodule

cherry http-fetch prune svn

cherry-pick http-push prune-packed symbolic-ref

citool imap-send pull tag

clean index-pack push tar-tree

clone init quiltimport unpack-file

commit init-db read-tree unpack-objects

commit-tree instaweb rebase update-index

config log receive-pack update-ref

count-objects lost-found reflog update-server-info

cvsexportcommit ls-files relink upload-archive

cvsimport ls-remote remote upload-pack

cvsserver ls-tree repack var

daemon mailinfo repo-config verify-pack

describe mailsplit request-pull verify-tag

diff merge rerere whatchanged

diff-files merge-base reset write-tree

diff-index merge-file rev-list

diff-tree merge-index rev-parse gitk

Marcello Henrique, [email protected] Git o basico 28 / 84

Page 66: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

add fast-export merge-one-file revert

am fast-import merge-resolve rm

annotate fetch merge-subtree send-email

apply fetch-pack merge-tree send-pack

archimport filter-branch mergetool sh-setup

archive fmt-merge-msg mktag shell

bisect for-each-ref mktree shortlog

blame format-patch mv show

branch fsck name-rev show-branch

bundle fsck-objects pack-objects show-index

cat-file gc pack-redundant show-ref

check-attr get-tar-commit-id pack-refs stash

check-ref-format grep parse-remote status

checkout gui patch-id stripspace

checkout-index hash-object peek-remote submodule

cherry http-fetch prune svn

cherry-pick http-push prune-packed symbolic-ref

citool imap-send pull tag

clean index-pack push tar-tree

clone init quiltimport unpack-file

commit init-db read-tree unpack-objects

commit-tree instaweb rebase update-index

config log receive-pack update-ref

count-objects lost-found reflog update-server-info

cvsexportcommit ls-files relink upload-archive

cvsimport ls-remote remote upload-pack

cvsserver ls-tree repack var

daemon mailinfo repo-config verify-pack

describe mailsplit request-pull verify-tag

diff merge rerere whatchanged

diff-files merge-base reset write-tree

diff-index merge-file rev-list

diff-tree merge-index rev-parse gitk

Marcello Henrique, [email protected] Git o basico 29 / 84

Page 67: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Comandos de ajuda

git help

Lista dos comandos mais comuns

git <command> -h

breve ajuda

man git-<command>

git help <command>

git <command> --help

paginas de manual

Marcello Henrique, [email protected] Git o basico 30 / 84

Page 68: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Configuracao do usuario

$HOME/.gitconfig$ git config --global user.name "Seu nome"$ git config --global user.email [email protected]$ git config --global color.pager true$ git config --global color.ui auto

Marcello Henrique, [email protected] Git o basico 31 / 84

Page 69: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Configuracao do usuario

$HOME/.gitconfig$ git config --global user.name "Seu nome"$ git config --global user.email [email protected]$ git config --global color.pager true$ git config --global color.ui auto

Marcello Henrique, [email protected] Git o basico 31 / 84

Page 70: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Configuracao do usuario$ cat .gitconfig

[user]

name = "Marcello Henrique"

email = "[email protected]"

[core]

pager = less -FRSX

editor = vim

[color]

ui = auto

[merge]

tool = vimdiff

Marcello Henrique, [email protected] Git o basico 32 / 84

Page 71: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Comando de inicializacao

$ git init

cria a area do projeto

cria o diretorio .git

Marcello Henrique, [email protected] Git o basico 33 / 84

Page 72: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

O que commitar?

adicionar$ git add file$ git add .

remover$ git rm file

renomear$ git mv old new

Marcello Henrique, [email protected] Git o basico 34 / 84

Page 73: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Ignorar arquivos

$ cat .gitignore

*.o

*~

Marcello Henrique, [email protected] Git o basico 35 / 84

Page 74: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Como commitar?

$ git commit -a -m‘‘some comment’’

Vai criar um commit de tudo ou somente dos itenstrabalhados (staged)

Marcello Henrique, [email protected] Git o basico 36 / 84

Page 75: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ mkdir project$ cd project$ git init

working tree

repository

.git

master

HEAD

index

Marcello Henrique, [email protected] Git o basico 37 / 84

Page 76: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ echo test > test

working tree

repository

.git

master

HEAD

index

test

Marcello Henrique, [email protected] Git o basico 37 / 84

Page 77: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ echo test > test$ git add test

working tree

repository

.git

master

HEAD

index

test

tree

52a266...

blob

9daefb... "test"

Marcello Henrique, [email protected] Git o basico 37 / 84

Page 78: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ echo test > test$ git add test$ git commit -m‘‘test’’

Created initial commit 6f01040: test

1 files changed, 1 insertions(+), 0 deletions(-)

create mode 100644 test

working tree

repository

.git

master

HEAD

commit

6f0104...

index

test

tree

52a266...

blob

9daefb... "test"

Marcello Henrique, [email protected] Git o basico 37 / 84

Page 79: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ echo test > test$ git add test$ git commit -m‘‘test’’$ mkdir dir$ echo foo > dir/foo$ git add dir/foo

working tree

repository

.git

master

HEAD

commit

6f0104...

index

test

tree

52a266...

blob

9daefb...

tree

cad6ae...

blob

257cc5...

tree

205f6b...

dir/foo

"test"

"dir"

"foo"

Marcello Henrique, [email protected] Git o basico 37 / 84

Page 80: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ echo test > test$ git add test$ git commit -m‘‘test’’$ mkdir dir$ echo foo > dir/foo$ git add dir/foo$ git commit -m‘‘foo’’

Created commit 52a0ff4: foo

1 files changed, 1 insertions(+),

0 deletions(-)

create mode 100644 dir/foo

working tree

repository

.git

master

HEAD

commit

6f0104...

index

test

tree

52a266...

blob

9daefb...

tree

cad6ae...

blob

257cc5...

tree

205f6b...

commit

52a0ff...

dir/foo

"test"

"dir"

"foo"

Marcello Henrique, [email protected] Git o basico 37 / 84

Page 81: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

$ git status

mostra. . .

staged (Modificados)

unstaged (Nao modificados)

untracked (Nao versionados)

Marcello Henrique, [email protected] Git o basico 38 / 84

Page 82: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao$ git diff

Mudancas entre ındice e os arquivos de trabalho$ git diff --cached

Mudancas entre o HEAD e o ındice$ git diff HEAD

Mudancas entre o HEAD e os arquivos de trabalho$ git diff $commit $commitMudancas entre dois commits

Marcello Henrique, [email protected] Git o basico 39 / 84

Page 83: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao$ git diff

Mudancas entre ındice e os arquivos de trabalho$ git diff --cached

Mudancas entre o HEAD e o ındice$ git diff HEAD

Mudancas entre o HEAD e os arquivos de trabalho$ git diff $commit $commitMudancas entre dois commits

Marcello Henrique, [email protected] Git o basico 39 / 84

Page 84: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao$ git diff

Mudancas entre ındice e os arquivos de trabalho$ git diff --cached

Mudancas entre o HEAD e o ındice$ git diff HEAD

Mudancas entre o HEAD e os arquivos de trabalho$ git diff $commit $commitMudancas entre dois commits

Marcello Henrique, [email protected] Git o basico 39 / 84

Page 85: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao$ git diff

Mudancas entre ındice e os arquivos de trabalho$ git diff --cached

Mudancas entre o HEAD e o ındice$ git diff HEAD

Mudancas entre o HEAD e os arquivos de trabalho$ git diff $commit $commitMudancas entre dois commits

Marcello Henrique, [email protected] Git o basico 39 / 84

Page 86: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

specific commit

ID. . .

full hash 6bb1270ffb60cbfef87266d2d4b4abe4218d9c68

short hash 6bb127

tag v1.5.6.1local branch masterremote branch origin/master

by message “:/some text”

checkout HEADlast fetch FETCH HEADprevious head ORIG HEAD. . .

Marcello Henrique, [email protected] Git o basico 40 / 84

Page 87: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Um commit antes do HEAD

HEAD^ == HEAD∼1

Marcello Henrique, [email protected] Git o basico 41 / 84

Page 88: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Alguns commits antes do HEAD

HEAD^^^ == HEAD∼3

Marcello Henrique, [email protected] Git o basico 42 / 84

Page 89: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Alguns commits antes do master

master^^^ == master∼3

Marcello Henrique, [email protected] Git o basico 43 / 84

Page 90: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Voce quer ver os de ontem?

@{yesterday} == HEAD@{yesterday}

Marcello Henrique, [email protected] Git o basico 44 / 84

Page 91: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Que tal my-other-branch em primeiro de Junho?

my-other-branch@{June.1}

Marcello Henrique, [email protected] Git o basico 45 / 84

Page 92: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Algumas mudancas atras do master?

master@{3}

Marcello Henrique, [email protected] Git o basico 46 / 84

Page 93: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Visualizacao do ultimo commit. . .$ git showcommit 83b2d051814e884a8e264127ed47552a5dcf6c1d

Author: Bart Trojanowski <[email protected]>

Date: Thu Jul 3 21:44:39 2008 -0400

changed one line

diff --git a/test b/test

index 808a2c4..99810fa 100644

--- a/test

+++ b/test

@@ -1,3 +1,3 @@

Some old text before the change.

-Some text for removal.

+Replacement line.

Some old text after the change.

Marcello Henrique, [email protected] Git o basico 47 / 84

Page 94: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Somente as estatısticas. . .$ git show --stat

commit 83b2d051814e884a8e264127ed47552a5dcf6c1d

Author: Bart Trojanowski <[email protected]>

Date: Thu Jul 3 21:44:39 2008 -0400

changed one line

test | 2 +-

1 files changed, 1 insertions(+), 1 deletions(-)

Marcello Henrique, [email protected] Git o basico 48 / 84

Page 95: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Igual as infomacoes de estado do SVN. . .$ git show --name-status

commit 3d3d2989b817af3fd4fa6d63f200113bd6c94bdb

Author: Bart Trojanowski <[email protected]>

Date: Thu Jul 3 22:59:13 2008 -0400

something more interesting

A sub/bar

D sub/foo

M test

Marcello Henrique, [email protected] Git o basico 49 / 84

Page 96: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Rever qualquer outro commit. . .$ git show HEAD$ git show HEAD^^^$ git show master~10$ git show master@{May.16}. . .

Marcello Henrique, [email protected] Git o basico 50 / 84

Page 97: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Mostrar um arquivo (ou arvore) no historico. . .$ git show HEAD:file

contents...

Marcello Henrique, [email protected] Git o basico 51 / 84

Page 98: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Veja o historico dos commits. . .$ git logcommit 3d3d2989b817af3fd4fa6d63f200113bd6c94bdb

Author: Bart Trojanowski <[email protected]>

Date: Thu Jul 3 22:59:13 2008 -0400

most recent commit

commit 83b2d051814e884a8e264127ed47552a5dcf6c1d

Author: Bart Trojanowski <[email protected]>

Date: Thu Jul 3 21:44:39 2008 -0400

second most recent

commit 1cc1b35a611c39f49842e2ca28d40886c1ae9b7c

Author: Bart Trojanowski <[email protected]>

Date: Thu Jul 3 21:44:05 2008 -0400

middle commit

commit 411515f51a78d66a27a7d56ebe9f70dbd2bff008

Author: Bart Trojanowski <[email protected]>

Date: Thu Jul 3 21:43:36 2008 -0400

second oldest

. . .Marcello Henrique, [email protected] Git o basico 52 / 84

Page 99: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

git log e impressionante!

Marcello Henrique, [email protected] Git o basico 53 / 84

Page 100: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Limita por faixa. . .$ git log tag..branch$ git log HEAD~10..$ git log branch1 branch2 ^common$ git log -10$ git log -10 master@{yesterday}$ git log --since="May 1" --until="June 1"

Marcello Henrique, [email protected] Git o basico 54 / 84

Page 101: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Limita por atributos do commit. . .$ git log --author=fred$ git log --committer=joe$ git log --grep="commit.*message.*text"

Marcello Henrique, [email protected] Git o basico 55 / 84

Page 102: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Presquisa por uma mudanca. . .$ git log -S‘‘some code change’’$ git log --pickaxe-regex -S‘‘some.*code.*change’’

Marcello Henrique, [email protected] Git o basico 56 / 84

Page 103: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Limita por mudancas especıficas no caminho. . .$ git log -- some/file

Marcello Henrique, [email protected] Git o basico 57 / 84

Page 104: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Outros modos de pesquisa. . .$ git grep -e "pattern" -- some/file$ git grep -e "pattern" branch -- some/file

Marcello Henrique, [email protected] Git o basico 58 / 84

Page 105: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Referencias

Mais rapido

Mais maleavel

Discartavel

3 tipos basico

Marcello Henrique, [email protected] Git o basico 59 / 84

Page 106: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Referencias

Mais rapido

Mais maleavel

Discartavel

3 tipos basico

Marcello Henrique, [email protected] Git o basico 59 / 84

Page 107: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Referencias

Mais rapido

Mais maleavel

Discartavel

3 tipos basico

Marcello Henrique, [email protected] Git o basico 59 / 84

Page 108: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Referencias

Mais rapido

Mais maleavel

Discartavel

3 tipos basico

Marcello Henrique, [email protected] Git o basico 59 / 84

Page 109: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Local branches

$ git branch -l

branch1

branch2

* master

.git/refs/heads/<branch>

Marcello Henrique, [email protected] Git o basico 60 / 84

Page 110: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

tags

$ git tag -l

tag1

tag2

tag3

.git/refs/tags/<tag>

Marcello Henrique, [email protected] Git o basico 61 / 84

Page 111: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git branch -r

fred/master

joe/master

joe/another-branch

.git/refs/remotes/<remote>/<branch>

Marcello Henrique, [email protected] Git o basico 62 / 84

Page 112: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git branch name commit

Nova branch “name” sobre HEAD ou especıfico commit

Marcello Henrique, [email protected] Git o basico 63 / 84

Page 113: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git checkout -f name

Atualiza os arquivos no branch “name”

Optionalmente forca subscrever mudancas nos arquivos

Marcello Henrique, [email protected] Git o basico 64 / 84

Page 114: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git checkout -b name commit

Atualiza os arquivos criando “name” branch

Marcello Henrique, [email protected] Git o basico 65 / 84

Page 115: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git checkout nameerror: You have local changes to ’filename’;

cannot switch branches.$ git checkout -m name

merge outstanding diff onto branch “name”

Pode resultar em conflito

Marcello Henrique, [email protected] Git o basico 66 / 84

Page 116: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Comecamos com uma arvore

masterA

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 117: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git checkout -b

bug-fix

master

HEAD

bug−fix A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 118: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git commit -a -m‘‘B’’

master

HEAD

Bbug−fix

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 119: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git commit -a -m‘‘C’’

master

HEAD

C

B

bug−fix

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 120: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce tem uma ideia arrasadora

master

HEAD

C

B

bug−fix

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 121: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce tem uma ideia arrasadora$ git checkout -b wicked

master

master

HEADC

B

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 122: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git commit -a -m‘‘D’’

master

HEAD

C

B

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 123: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git commit -a -m‘‘E’’

master

HEAD

C

B

E

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 124: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce chegou em um pontoaceitavel

master

HEAD

C

B

E

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 125: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce chegou em um pontoaceitavel$ git tag -a -m‘‘got

somewhere’’ good

master

HEAD

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 126: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Gerenciar correcoes de bug

master

HEAD

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 127: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git checkout bug-fix

master

HEAD

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 128: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git commit -a -m‘‘F’’

master

HEAD

F

C

B

goodE

D

bug−fix wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 129: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce so pensa na sua versaoboa. . .

master

HEAD

F

C

B

goodE

D

bug−fix wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 130: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce so pensa na sua versaoboa. . .$ git checkout wicked

HEAD

F

C

B

goodE

D

bug−fix wicked

A master

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 131: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

. . . Entao voce termina suafuncionalidade arrasadora$ git commit -a -m‘‘G’’

HEAD

F

G

C

B

goodE

D

bug−fix

wicked

A master

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 132: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Funcionalidade pronta

bug estao corrigidos

. . . hora de mesclar!HEAD

F

G

C

B

goodE

D

bug−fix

wicked

A master

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 133: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git checkout master

master

HEAD

F

G

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 134: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git reset --hard bug-fix

master

HEAD

F

G

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 135: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git merge wicked

master

HEAD

H

F

G

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, [email protected] Git o basico 67 / 84

Page 136: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando

$ git merge <branch> ...

Mescla multiplas branches

Cria commit com 2+ pais

Pode causar conflitoNota: Requer intervencao do usuario

Marcello Henrique, [email protected] Git o basico 68 / 84

Page 137: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando

Mais um exemplo

A

one

Marcello Henrique, [email protected] Git o basico 69 / 84

Page 138: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando

Duas branches

A

B C

one two

Marcello Henrique, [email protected] Git o basico 69 / 84

Page 139: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout -b three

two

A

B C

one twothree

Marcello Henrique, [email protected] Git o basico 69 / 84

Page 140: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout -b three

two$ git merge one

A

B C

one two

three

D

Marcello Henrique, [email protected] Git o basico 69 / 84

Page 141: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando

A

B C

D

E F

Gone two

three

Marcello Henrique, [email protected] Git o basico 69 / 84

Page 142: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout three

A

B C

D

E F

Gone two

three

Marcello Henrique, [email protected] Git o basico 69 / 84

Page 143: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout three$ git merge one two

A

B C

D

E F

Gone two

three

H

Marcello Henrique, [email protected] Git o basico 69 / 84

Page 144: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout three$ git merge one two

“octopus”

A

B C

D

E F

Gone two

three

H

Marcello Henrique, [email protected] Git o basico 69 / 84

Page 145: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Rebase

$ git rebase <branch>

Tranfere novos trabalhos para uma nova base

Pode causar conflitoNota: Requer intervencao do usuario

Marcello Henrique, [email protected] Git o basico 70 / 84

Page 146: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

Temos 2 arvores identicas

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 147: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

$ git merge master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 148: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

Que facil!

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 149: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

$ git rebase master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 150: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

E’

D’

$ git rebase master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 151: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

E’

D’ e

d

$ git rebase master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 152: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

E’

D’ e

d

$ git rebase master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 153: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

E’

D’ e

d

$ git rebase master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 154: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

E’

D’ e

d

$ git rebase master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 155: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

E’

D’ e

d

$ git rebase master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 156: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

E

D

master

test

A

F

E’

D’

$ git rebase master

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 157: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Diferenca entre merge e rebase

C

B

E

D

master

test

A

merge rebase

C

B

master

test

A

F

E’

D’

Marcello Henrique, [email protected] Git o basico 71 / 84

Page 158: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remotes

$ git clone <remote>

Replica repositorio remoto

Preenche o novo repositorio

Atualiza novas arvores de trabalho

Marcello Henrique, [email protected] Git o basico 72 / 84

Page 159: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Protocolos

Repositorio local

/home/git/project.git/

file:///home/git/project.git/

Protocolo http

http://repo.or.cz/r/git.git

Protocolo nativo git

git://repo.or.cz/git.git

Protocolo ssh

ssh://[email protected]/~git/project.git/

[email protected]/~git/project.git/

Marcello Henrique, [email protected] Git o basico 73 / 84

Page 160: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Protocolos

Repositorio local

/home/git/project.git/

file:///home/git/project.git/

Protocolo http

http://repo.or.cz/r/git.git

Protocolo nativo git

git://repo.or.cz/git.git

Protocolo ssh

ssh://[email protected]/~git/project.git/

[email protected]/~git/project.git/

Marcello Henrique, [email protected] Git o basico 73 / 84

Page 161: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Protocolos

Repositorio local

/home/git/project.git/

file:///home/git/project.git/

Protocolo http

http://repo.or.cz/r/git.git

Protocolo nativo git

git://repo.or.cz/git.git

Protocolo ssh

ssh://[email protected]/~git/project.git/

[email protected]/~git/project.git/

Marcello Henrique, [email protected] Git o basico 73 / 84

Page 162: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Protocolos

Repositorio local

/home/git/project.git/

file:///home/git/project.git/

Protocolo http

http://repo.or.cz/r/git.git

Protocolo nativo git

git://repo.or.cz/git.git

Protocolo ssh

ssh://[email protected]/~git/project.git/

[email protected]/~git/project.git/

Marcello Henrique, [email protected] Git o basico 73 / 84

Page 163: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz

git://repo.or.cz/project.git

Page 164: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz

$ git clone ssh+git://repo.or.cz/project.git

Page 165: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz local

$ git clone ssh+git://repo.or.cz/project.git

Initialize project/.git

Initialized empty Git repository in /tmp/project/.git/

remote: Counting objects: 77575, done.

remote: Compressing objects: 100% (26407/26407), done.

remote: Total 77575 (delta 55750), reused 71007 (delta 49775)

Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.

Resolving deltas: 100% (55750/55750), done.

Checking out files: 100% (1396/1396), done.

Page 166: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz local

$ git clone ssh+git://repo.or.cz/project.git

Initialize project/.git

Initialized empty Git repository in /tmp/project/.git/

remote: Counting objects: 77575, done.

remote: Compressing objects: 100% (26407/26407), done.

remote: Total 77575 (delta 55750), reused 71007 (delta 49775)

Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.

Resolving deltas: 100% (55750/55750), done.

Checking out files: 100% (1396/1396), done.

Page 167: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz local

$ git clone ssh+git://repo.or.cz/project.git build-tree

Initialize build-tree/.git

Initialized empty Git repository in /tmp/build-tree/.git/

remote: Counting objects: 77575, done.

remote: Compressing objects: 100% (26407/26407), done.

remote: Total 77575 (delta 55750), reused 71007 (delta 49775)

Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.

Resolving deltas: 100% (55750/55750), done.

Checking out files: 100% (1396/1396), done.

Page 168: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz local

$ git clone ssh+git://repo.or.cz/project.git

Initialize project/.git

Initialized empty Git repository in /tmp/project/.git/

remote: Counting objects: 77575, done.

remote: Compressing objects: 100% (26407/26407), done.

remote: Total 77575 (delta 55750), reused 71007 (delta 49775)

Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.

Resolving deltas: 100% (55750/55750), done.

Checking out files: 100% (1396/1396), done.

Page 169: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz local

A v0.1.0

B

C v0.2.0

F

origin/master

$ git clone ssh+git://repo.or.cz/project.git

Initialize project/.git

Initialized empty Git repository in /tmp/project/.git/

remote: Counting objects: 77575, done.

Page 170: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz local

A v0.1.0

B

C v0.2.0

F

origin/master

$ git clone ssh+git://repo.or.cz/project.git

Initialize project/.git

Initialized empty Git repository in /tmp/project/.git/

remote: Counting objects: 77575, done.

remote: Compressing objects: 100% (26407/26407), done.

remote: Total 77575 (delta 55750), reused 71007 (delta 49775)

Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.

Resolving deltas: 100% (55750/55750), done.

Checking out files: 100% (1396/1396), done.

Page 171: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

$ git clone ssh+git://repo.or.cz/project.git

Initialize project/.git

Initialized empty Git repository in /tmp/project/.git/

remote: Counting objects: 77575, done.

remote: Compressing objects: 100% (26407/26407), done.

remote: Total 77575 (delta 55750), reused 71007 (delta 49775)

Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.

Resolving deltas: 100% (55750/55750), done.

Checking out files: 100% (1396/1396), done.

Page 172: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo$ git clone ssh+git://repo.or.cz/project.git

Initialize project/.git

Initialized empty Git repository in /tmp/project/.git/

remote: Counting objects: 77575, done.

remote: Compressing objects: 100% (26407/26407), done.

remote: Total 77575 (delta 55750), reused 71007 (delta 49775)

Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.

Resolving deltas: 100% (55750/55750), done.

Checking out files: 100% (1396/1396), done.

Page 173: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo

$ git branch -a

* master

origin/master

$ git tag -l

v0.1.0

v0.2.0

Page 174: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo

G

H

Page 175: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo

G

H

$ git fetch

Page 176: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo

G

H

$ git fetch

remote: Counting objects: 236, done.

remote: Compressing objects: 100% (190/190), done.

remote: Total 190 (delta 170), reused 0 (delta 0)

Receiving objects: 100% (190/190), 69.53 KiB, done.

Resolving deltas: 100% (170/170), completed with 40 local objects.

From mail.jukie.net:work/oclug/intro-to-git

573ff80..06e3703 master -> origin/master

Page 177: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo

G

H

$ git fetch

remote: Counting objects: 236, done.

remote: Compressing objects: 100% (190/190), done.

remote: Total 190 (delta 170), reused 0 (delta 0)

Receiving objects: 100% (190/190), 69.53 KiB, done.

Resolving deltas: 100% (170/170), completed with 40 local objects.

From mail.jukie.net:work/oclug/intro-to-git

573ff80..06e3703 master -> origin/master

Page 178: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo

G

H

G

H

$ git fetch

remote: Counting objects: 236, done.

remote: Compressing objects: 100% (190/190), done.

remote: Total 190 (delta 170), reused 0 (delta 0)

Receiving objects: 100% (190/190), 69.53 KiB, done.

Resolving deltas: 100% (170/170), completed with 40 local objects.

From mail.jukie.net:work/oclug/intro-to-git

573ff80..06e3703 master -> origin/master

Page 179: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo

G

H

G

H

. . . Nenhuma mudanca no disco?

Page 180: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ ‘−− foo

G

H

G

H

git fetch somente atualiza DAG

Page 181: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

git merge origin/master

fast-forwards master para origin/mastere atualiza a arvore de trabalho

Page 182: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

git fetch + git merge = git pull

Page 183: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

Vamos fazer alguns commit locais

Page 184: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

$ git commit -a -m‘‘I’’

Page 185: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

I

$ git commit -a -m‘‘I’’

Created commit b618aed: I

2 files changed, 11 insertions(+), 20 deletions(-)

Page 186: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

I

Page 187: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

I

$ git push

Page 188: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

II

$ git push

Counting objects: 9, done.

Compressing objects: 100% (5/5), done.

Writing objects: 100% (5/5), 810 bytes, done.

Total 5 (delta 4), reused 0 (delta 0)

refs/heads/master: 9ddc135 -> 15b67c0

To ssh+git://repo.or.cz/project.git

9ddc135..15b67c0 master -> master

Page 189: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

II

$ git push

Counting objects: 9, done.

Compressing objects: 100% (5/5), done.

Writing objects: 100% (5/5), 810 bytes, done.

Total 5 (delta 4), reused 0 (delta 0)

refs/heads/master: 9ddc135 -> 15b67c0

To ssh+git://repo.or.cz/project.git

9ddc135..15b67c0 master -> master

Page 190: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin" local

A v0.1.0

B

C v0.2.0

F

origin/master

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

G

H

II

Page 191: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

foo.com

. . . Entretanto, noutros locais na Internet . . .

Page 192: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

foo.com

Fred clones o projeto.

Page 193: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

foo.com

G

H

I

Fred clones o projeto.

Page 194: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

foo.com

G

H

I

J

. . . e faz mais mudancas.

Page 195: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

foo.com

G

H

I

J

Fred nao pode empurrar (push).

Page 196: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

foo.com

G

H

I

J

From: [email protected] Subject: I fixed a bug

Please pull from

http://foo.com/project.git/

-Fred

Page 197: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

foo.com

G

H

I

J

local

A v0.1.0

B

C v0.2.0

F

ori

gin

/maste

r

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

I

K

From: [email protected] Subject: I fixed a bug

Please pull from

http://foo.com/project.git/

-Fred

Page 198: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

foo.com

G

H

I

J

local

A v0.1.0

B

C v0.2.0

F

ori

gin

/maste

r

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

I

K

$ git remote add fred http://foo.com/project.git/

Page 199: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

foo.com

G

H

I

J

local

A v0.1.0

B

C v0.2.0

F

ori

gin

/maste

r

master

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

H

I

K

$ git remote add fred http://foo.com/project.git/

Page 200: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

A v0.1.0

B

C v0.2.0

F

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

Hori

gin

/maste

r

master

I

K

$ git remote add fred http://foo.com/project.git/

Page 201: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

A v0.1.0

B

C v0.2.0

F

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

G

Hori

gin

/maste

r

master

I

K

$ git fetch fred

Page 202: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K

$ git fetch fred

Page 203: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred

/maste

r

$ git fetch fred

Page 204: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred

/maste

r

Page 205: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred

/maste

r

$ git log fred/master

Page 206: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred

/maste

r

$ git log fred/master$ git log fred/master master

Page 207: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred

/maste

r

$ git log fred/master$ git log fred/master master$ git log -p fred/master master

Page 208: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred/m

aste

r

$ git checkout -b fred-fix fred/master

Page 209: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred/m

aste

r

fred−fix

$ git checkout -b fred-fix fred/master

Page 210: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred/m

aste

r

fred−fix

$ git checkout master

Page 211: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred/m

aste

r

fred−fixL

$ git checkout master$ git merge fred-fix

Page 212: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred/m

aste

r

L

$ git checkout master$ git merge fred-fix$ git branch -d fred-fix

Page 213: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred/m

aste

r

L

$ git push

Page 214: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

Hori

gin

/maste

r

master

I

K J

fred/m

aste

r

L

K J

L

$ git push

Page 215: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

H

ori

gin

/maste

r master

I

K J

fred/m

aste

r

L

K J

L

$ git push

Page 216: Intro To Git

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

A v0.1.0

B

C v0.2.0

F

master

"fred"

G

H

I

J

local

/tmp/project/|−− .git/|−− bar‘−− sub/ |−− fiz ‘−− foo

A v0.1.0

B

C v0.2.0

FG

H

ori

gin

/maste

r master

I

K J

fred/m

aste

r

L

K J

L

Page 217: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Ambientes Graficos

gitk

Agradavel visualizacao da arvore de revisoes

git gui

Executar tarefas sao banais em um ambiente de janelasEx: add/rm arquivos, fazer commits, branch, etc. . .

Marcello Henrique, [email protected] Git o basico 75 / 84

Page 218: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Ambientes Graficos

gitk

Agradavel visualizacao da arvore de revisoes

git gui

Executar tarefas sao banais em um ambiente de janelasEx: add/rm arquivos, fazer commits, branch, etc. . .

Marcello Henrique, [email protected] Git o basico 75 / 84

Page 219: Intro To Git
Page 220: Intro To Git
Page 221: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Objetos perdidos

Lembram dos objetos perdidos ?

Marcello Henrique, [email protected] Git o basico 77 / 84

Page 222: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Objetos perdidos

.git/objects

|-- 23

| ‘-- d4bd826aba9e29aaace9411cc175b784edc399

|-- 76

| ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3

|-- c4

| ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc

|-- e7

| ‘-- 4be61128eef713459ca4e32398d689fe80864e

|-- info

| ‘-- packs

‘-- pack

|-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx

‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack

Marcello Henrique, [email protected] Git o basico 78 / 84

Page 223: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Objetos perdidos$ git gc

Counting objects: 636, done.

Compressing objects: 100% (635/635), done.

Writing objects: 100% (636/636), done.

Total 636 (delta 486), reused 0 (delta 0)

Removing duplicate objects: 100% (256/256), done.

GC executa automaticamente quando voce obtem 6700objetos(configuravel)

Marcello Henrique, [email protected] Git o basico 79 / 84

Page 224: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Objetos perdidos$ git gc

Counting objects: 636, done.

Compressing objects: 100% (635/635), done.

Writing objects: 100% (636/636), done.

Total 636 (delta 486), reused 0 (delta 0)

Removing duplicate objects: 100% (256/256), done.

GC executa automaticamente quando voce obtem 6700objetos(configuravel)

Marcello Henrique, [email protected] Git o basico 79 / 84

Page 225: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Outras Leituras

Site oficialhttp://git.or.cz

Git wikigit.or.cz/gitwiki

Podcast (Scott Chacon)GitCasts.com

Bart Jukiehttp://www.jukie.net/∼bart/blog/

Apresentacao Originalgit://tachyon.jukie.net/intro-to-git.git/

Marcello Henrique, [email protected] Git o basico 80 / 84

Page 226: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mais links

git-scmhttp://www.git-scm.com

Vıdeo Linus sobre o githttp://www.youtube.com/watch?v=4XpnKHJAok8

Meu bloghttp://faraohh.blogspot.com

Cercomp/UFGhttp://www.cercomp.ufg.br

Marcello Henrique, [email protected] Git o basico 81 / 84

Page 227: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

The truth credithttp://www.jukie.net/~bart/blog/

Marcello Henrique, [email protected] Git o basico 82 / 84

Bart TrojanowskiHi Marcello,

* Marcello Henrique <[email protected]> [081023

15:12]: > I seen that you use beamer, you

could share their sources in latex/beamer? ( >

http://excess.org/article/2008/07/ogre-git-tutorial/)

Here you go...

git://tachyon.jukie.net/intro-to-git.git/

> Would like to create a presentation for

beginners.

I grant you rights to the material if used with

attribution.

Cheers,

-Bart

Page 228: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Perguntas?

Perguntas?

Marcello Henrique, [email protected] Git o basico 83 / 84

Page 229: Intro To Git

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Perguntas?

Obrigado!

Marcello Henrique, [email protected] Git o basico 84 / 84