intro to git

Post on 21-Aug-2015

2.752 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ConceitosRepositorioUsando GIT

Git o basico

Marcello Henrique, faraohh@gmail.com

Brasil/Goias - UFG

23 de Outubro de 2008

Marcello Henrique, faraohh@gmail.com Git o basico 1 / 84

ConceitosRepositorioUsando GIT

1 ConceitosSource Control ManagerDecentralizacaoHistoria

2 RepositorioEstruturaObjetos

3 Usando GITComandosBranchingRemotes

Marcello Henrique, faraohh@gmail.com Git o basico 2 / 84

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, faraohh@gmail.com Git o basico 3 / 84

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, faraohh@gmail.com Git o basico 3 / 84

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, faraohh@gmail.com Git o basico 3 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Arvore de trabalho

diretorios

arquivos

Marcello Henrique, faraohh@gmail.com Git o basico 4 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Repositorio de conteudo

arquivos

a.cv1

Marcello Henrique, faraohh@gmail.com Git o basico 5 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Repositorio de conteudo

arquivos

commits

a.cv1

b.cv9

metadata

Marcello Henrique, faraohh@gmail.com Git o basico 5 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Repositorio de conteudo

arquivos

commits

ancentrais

A

B C

E

tim

e

D

Marcello Henrique, faraohh@gmail.com Git o basico 5 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM componentes

Directed Acyclic Graph “DAG”

A

B C

D

EG

F

H

Marcello Henrique, faraohh@gmail.com Git o basico 6 / 84

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, faraohh@gmail.com Git o basico 7 / 84

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, faraohh@gmail.com Git o basico 7 / 84

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, faraohh@gmail.com Git o basico 7 / 84

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, faraohh@gmail.com Git o basico 7 / 84

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, faraohh@gmail.com Git o basico 7 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM operacoes I

Inicializacao

init

checkout

branch

Modificacao

add, delete, rename

commit

Informacao

status

diff

log

Marcello Henrique, faraohh@gmail.com Git o basico 8 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

SCM operacoes II

Referencias

tag

branch

Marcello Henrique, faraohh@gmail.com Git o basico 9 / 84

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, faraohh@gmail.com Git o basico 10 / 84

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, faraohh@gmail.com Git o basico 11 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Operacoes SCM

Decentralizado

clone

pull, fetch

push

Marcello Henrique, faraohh@gmail.com Git o basico 12 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream

Repositorio publico

Marcello Henrique, faraohh@gmail.com Git o basico 13 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream

local

Fazendo um clone local

Marcello Henrique, faraohh@gmail.com Git o basico 13 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream

pristine

topic Atopic B

Clonar na rede local e mais leve

Marcello Henrique, faraohh@gmail.com Git o basico 13 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream

pristine

topic Atopic B

Empurando mudancas entre repositorios

Marcello Henrique, faraohh@gmail.com Git o basico 13 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream web server

pristine

topic Atopic B

Enviando mudancas para servidores publicos

Marcello Henrique, faraohh@gmail.com Git o basico 13 / 84

ConceitosRepositorioUsando GIT

Source Control ManagerDecentralizacaoHistoria

Decentralizacao

upstream web server

pristine

topic Atopic B

another

Compartilhando mudancas com redes confiaveis

Marcello Henrique, faraohh@gmail.com Git o basico 13 / 84

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, faraohh@gmail.com Git o basico 14 / 84

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, faraohh@gmail.com Git o basico 15 / 84

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, faraohh@gmail.com Git o basico 15 / 84

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, faraohh@gmail.com Git o basico 15 / 84

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, faraohh@gmail.com Git o basico 15 / 84

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, faraohh@gmail.com Git o basico 15 / 84

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, faraohh@gmail.com Git o basico 16 / 84

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, faraohh@gmail.com Git o basico 17 / 84

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, faraohh@gmail.com Git o basico 17 / 84

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, faraohh@gmail.com Git o basico 17 / 84

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, faraohh@gmail.com Git o basico 17 / 84

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, faraohh@gmail.com Git o basico 17 / 84

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, faraohh@gmail.com Git o basico 17 / 84

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, faraohh@gmail.com Git o basico 17 / 84

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, faraohh@gmail.com Git o basico 18 / 84

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, faraohh@gmail.com Git o basico 19 / 84

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, faraohh@gmail.com Git o basico 20 / 84

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, faraohh@gmail.com Git o basico 21 / 84

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, faraohh@gmail.com Git o basico 22 / 84

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Conteudo enderecavel

type size

data

Marcello Henrique, faraohh@gmail.com Git o basico 23 / 84

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Conteudo enderecavel

type size

data

SH

A1

52a0ff44aba8599f43a5d821c421af316cb7305

Marcello Henrique, faraohh@gmail.com Git o basico 23 / 84

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Conteudo enderecavel

type size

data

52a0ff44aba8599f43a5d821c421af316cb7305

Marcello Henrique, faraohh@gmail.com Git o basico 23 / 84

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Conteudo enderecavel type size

data

52a0ff44aba8599f43a5d821c421af316cb73051

Marcello Henrique, faraohh@gmail.com Git o basico 23 / 84

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

4 Tipos

Blobs

"blob" size

file data

Marcello Henrique, faraohh@gmail.com Git o basico 23 / 84

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, faraohh@gmail.com Git o basico 23 / 84

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, faraohh@gmail.com Git o basico 23 / 84

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, faraohh@gmail.com Git o basico 23 / 84

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, faraohh@gmail.com Git o basico 23 / 84

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, faraohh@gmail.com Git o basico 23 / 84

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, faraohh@gmail.com Git o basico 23 / 84

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, faraohh@gmail.com Git o basico 23 / 84

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Imutavel

type size

data

Marcello Henrique, faraohh@gmail.com Git o basico 23 / 84

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Imutavel

type size

data

type size

data’

Marcello Henrique, faraohh@gmail.com Git o basico 23 / 84

ConceitosRepositorioUsando GIT

EstruturaObjetos

Objetos

Imutavel

type size

data

type size

data’

SH

A1

8a9fd66b8bb939638564ebfdecc23b5d58070fc8

Marcello Henrique, faraohh@gmail.com Git o basico 23 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

ComandosSintaxe

$ git <options> <command> <options>

Marcello Henrique, faraohh@gmail.com Git o basico 24 / 84

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, faraohh@gmail.com Git o basico 25 / 84

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, faraohh@gmail.com Git o basico 26 / 84

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, faraohh@gmail.com Git o basico 27 / 84

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, faraohh@gmail.com Git o basico 28 / 84

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, faraohh@gmail.com Git o basico 29 / 84

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, faraohh@gmail.com Git o basico 30 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Configuracao do usuario

$HOME/.gitconfig$ git config --global user.name "Seu nome"$ git config --global user.email usuario@dominio.com$ git config --global color.pager true$ git config --global color.ui auto

Marcello Henrique, faraohh@gmail.com Git o basico 31 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Configuracao do usuario

$HOME/.gitconfig$ git config --global user.name "Seu nome"$ git config --global user.email usuario@dominio.com$ git config --global color.pager true$ git config --global color.ui auto

Marcello Henrique, faraohh@gmail.com Git o basico 31 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Configuracao do usuario$ cat .gitconfig

[user]

name = "Marcello Henrique"

email = "faraohh@gmail.com"

[core]

pager = less -FRSX

editor = vim

[color]

ui = auto

[merge]

tool = vimdiff

Marcello Henrique, faraohh@gmail.com Git o basico 32 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Comando de inicializacao

$ git init

cria a area do projeto

cria o diretorio .git

Marcello Henrique, faraohh@gmail.com Git o basico 33 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

O que commitar?

adicionar$ git add file$ git add .

remover$ git rm file

renomear$ git mv old new

Marcello Henrique, faraohh@gmail.com Git o basico 34 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Ignorar arquivos

$ cat .gitignore

*.o

*~

Marcello Henrique, faraohh@gmail.com Git o basico 35 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Como commitar?

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

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

Marcello Henrique, faraohh@gmail.com Git o basico 36 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ mkdir project$ cd project$ git init

working tree

repository

.git

master

HEAD

index

Marcello Henrique, faraohh@gmail.com Git o basico 37 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ echo test > test

working tree

repository

.git

master

HEAD

index

test

Marcello Henrique, faraohh@gmail.com Git o basico 37 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ echo test > test$ git add test

working tree

repository

.git

master

HEAD

index

test

tree

52a266...

blob

9daefb... "test"

Marcello Henrique, faraohh@gmail.com Git o basico 37 / 84

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, faraohh@gmail.com Git o basico 37 / 84

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, faraohh@gmail.com Git o basico 37 / 84

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, faraohh@gmail.com Git o basico 37 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

$ git status

mostra. . .

staged (Modificados)

unstaged (Nao modificados)

untracked (Nao versionados)

Marcello Henrique, faraohh@gmail.com Git o basico 38 / 84

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, faraohh@gmail.com Git o basico 39 / 84

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, faraohh@gmail.com Git o basico 39 / 84

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, faraohh@gmail.com Git o basico 39 / 84

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, faraohh@gmail.com Git o basico 39 / 84

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, faraohh@gmail.com Git o basico 40 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Um commit antes do HEAD

HEAD^ == HEAD∼1

Marcello Henrique, faraohh@gmail.com Git o basico 41 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Alguns commits antes do HEAD

HEAD^^^ == HEAD∼3

Marcello Henrique, faraohh@gmail.com Git o basico 42 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Alguns commits antes do master

master^^^ == master∼3

Marcello Henrique, faraohh@gmail.com Git o basico 43 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Voce quer ver os de ontem?

@{yesterday} == HEAD@{yesterday}

Marcello Henrique, faraohh@gmail.com Git o basico 44 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

my-other-branch@{June.1}

Marcello Henrique, faraohh@gmail.com Git o basico 45 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

Algumas mudancas atras do master?

master@{3}

Marcello Henrique, faraohh@gmail.com Git o basico 46 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

Author: Bart Trojanowski <bart@jukie.net>

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, faraohh@gmail.com Git o basico 47 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

commit 83b2d051814e884a8e264127ed47552a5dcf6c1d

Author: Bart Trojanowski <bart@jukie.net>

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

changed one line

test | 2 +-

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

Marcello Henrique, faraohh@gmail.com Git o basico 48 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

commit 3d3d2989b817af3fd4fa6d63f200113bd6c94bdb

Author: Bart Trojanowski <bart@jukie.net>

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

something more interesting

A sub/bar

D sub/foo

M test

Marcello Henrique, faraohh@gmail.com Git o basico 49 / 84

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, faraohh@gmail.com Git o basico 50 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

contents...

Marcello Henrique, faraohh@gmail.com Git o basico 51 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

Author: Bart Trojanowski <bart@jukie.net>

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

most recent commit

commit 83b2d051814e884a8e264127ed47552a5dcf6c1d

Author: Bart Trojanowski <bart@jukie.net>

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

second most recent

commit 1cc1b35a611c39f49842e2ca28d40886c1ae9b7c

Author: Bart Trojanowski <bart@jukie.net>

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

middle commit

commit 411515f51a78d66a27a7d56ebe9f70dbd2bff008

Author: Bart Trojanowski <bart@jukie.net>

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

second oldest

. . .Marcello Henrique, faraohh@gmail.com Git o basico 52 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

git log e impressionante!

Marcello Henrique, faraohh@gmail.com Git o basico 53 / 84

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, faraohh@gmail.com Git o basico 54 / 84

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, faraohh@gmail.com Git o basico 55 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

Marcello Henrique, faraohh@gmail.com Git o basico 56 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

Marcello Henrique, faraohh@gmail.com Git o basico 57 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Inspecao

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

Marcello Henrique, faraohh@gmail.com Git o basico 58 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Referencias

Mais rapido

Mais maleavel

Discartavel

3 tipos basico

Marcello Henrique, faraohh@gmail.com Git o basico 59 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Referencias

Mais rapido

Mais maleavel

Discartavel

3 tipos basico

Marcello Henrique, faraohh@gmail.com Git o basico 59 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Referencias

Mais rapido

Mais maleavel

Discartavel

3 tipos basico

Marcello Henrique, faraohh@gmail.com Git o basico 59 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Referencias

Mais rapido

Mais maleavel

Discartavel

3 tipos basico

Marcello Henrique, faraohh@gmail.com Git o basico 59 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Local branches

$ git branch -l

branch1

branch2

* master

.git/refs/heads/<branch>

Marcello Henrique, faraohh@gmail.com Git o basico 60 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

tags

$ git tag -l

tag1

tag2

tag3

.git/refs/tags/<tag>

Marcello Henrique, faraohh@gmail.com Git o basico 61 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git branch -r

fred/master

joe/master

joe/another-branch

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

Marcello Henrique, faraohh@gmail.com Git o basico 62 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git branch name commit

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

Marcello Henrique, faraohh@gmail.com Git o basico 63 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git checkout -f name

Atualiza os arquivos no branch “name”

Optionalmente forca subscrever mudancas nos arquivos

Marcello Henrique, faraohh@gmail.com Git o basico 64 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remote branches

$ git checkout -b name commit

Atualiza os arquivos criando “name” branch

Marcello Henrique, faraohh@gmail.com Git o basico 65 / 84

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, faraohh@gmail.com Git o basico 66 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Comecamos com uma arvore

masterA

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git checkout -b

bug-fix

master

HEAD

bug−fix A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

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

master

HEAD

Bbug−fix

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

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

master

HEAD

C

B

bug−fix

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce tem uma ideia arrasadora

master

HEAD

C

B

bug−fix

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce tem uma ideia arrasadora$ git checkout -b wicked

master

master

HEADC

B

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

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

master

HEAD

C

B

D

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

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

master

HEAD

C

B

E

D

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce chegou em um pontoaceitavel

master

HEAD

C

B

E

D

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

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, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Gerenciar correcoes de bug

master

HEAD

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git checkout bug-fix

master

HEAD

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

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

master

HEAD

F

C

B

goodE

D

bug−fix wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Voce so pensa na sua versaoboa. . .

master

HEAD

F

C

B

goodE

D

bug−fix wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

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, faraohh@gmail.com Git o basico 67 / 84

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, faraohh@gmail.com Git o basico 67 / 84

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, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git checkout master

master

HEAD

F

G

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git reset --hard bug-fix

master

HEAD

F

G

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes$ git merge wicked

master

HEAD

H

F

G

C

B

goodE

D

bug−fix

wicked

A

Marcello Henrique, faraohh@gmail.com Git o basico 67 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando

$ git merge <branch> ...

Mescla multiplas branches

Cria commit com 2+ pais

Pode causar conflitoNota: Requer intervencao do usuario

Marcello Henrique, faraohh@gmail.com Git o basico 68 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando

Mais um exemplo

A

one

Marcello Henrique, faraohh@gmail.com Git o basico 69 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando

Duas branches

A

B C

one two

Marcello Henrique, faraohh@gmail.com Git o basico 69 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout -b three

two

A

B C

one twothree

Marcello Henrique, faraohh@gmail.com Git o basico 69 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout -b three

two$ git merge one

A

B C

one two

three

D

Marcello Henrique, faraohh@gmail.com Git o basico 69 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando

A

B C

D

E F

Gone two

three

Marcello Henrique, faraohh@gmail.com Git o basico 69 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout three

A

B C

D

E F

Gone two

three

Marcello Henrique, faraohh@gmail.com Git o basico 69 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout three$ git merge one two

A

B C

D

E F

Gone two

three

H

Marcello Henrique, faraohh@gmail.com Git o basico 69 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Mesclando$ git checkout three$ git merge one two

“octopus”

A

B C

D

E F

Gone two

three

H

Marcello Henrique, faraohh@gmail.com Git o basico 69 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Rebase

$ git rebase <branch>

Tranfere novos trabalhos para uma nova base

Pode causar conflitoNota: Requer intervencao do usuario

Marcello Henrique, faraohh@gmail.com Git o basico 70 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

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, faraohh@gmail.com Git o basico 71 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Remotes

$ git clone <remote>

Replica repositorio remoto

Preenche o novo repositorio

Atualiza novas arvores de trabalho

Marcello Henrique, faraohh@gmail.com Git o basico 72 / 84

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://bart@jukie.net/~git/project.git/

bart@jukie.net/~git/project.git/

Marcello Henrique, faraohh@gmail.com Git o basico 73 / 84

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://bart@jukie.net/~git/project.git/

bart@jukie.net/~git/project.git/

Marcello Henrique, faraohh@gmail.com Git o basico 73 / 84

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://bart@jukie.net/~git/project.git/

bart@jukie.net/~git/project.git/

Marcello Henrique, faraohh@gmail.com Git o basico 73 / 84

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://bart@jukie.net/~git/project.git/

bart@jukie.net/~git/project.git/

Marcello Henrique, faraohh@gmail.com Git o basico 73 / 84

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz

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

A v0.1.0

B

C v0.2.0

F

master

repo.or.cz

$ git clone ssh+git://repo.or.cz/project.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.

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.

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.

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.

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.

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.

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.

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.

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

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

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

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

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

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

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?

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

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

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

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

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’’

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(-)

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

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

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

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

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

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

foo.com

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

A v0.1.0

B

C v0.2.0

F

master

"origin"

G

H

I

foo.com

Fred clones o projeto.

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.

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.

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).

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: fred@foo.com Subject: I fixed a bug

Please pull from

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

-Fred

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: fred@foo.com Subject: I fixed a bug

Please pull from

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

-Fred

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/

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/

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/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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, faraohh@gmail.com Git o basico 75 / 84

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, faraohh@gmail.com Git o basico 75 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Objetos perdidos

Lembram dos objetos perdidos ?

Marcello Henrique, faraohh@gmail.com Git o basico 77 / 84

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, faraohh@gmail.com Git o basico 78 / 84

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, faraohh@gmail.com Git o basico 79 / 84

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, faraohh@gmail.com Git o basico 79 / 84

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, faraohh@gmail.com Git o basico 80 / 84

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, faraohh@gmail.com Git o basico 81 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

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

Marcello Henrique, faraohh@gmail.com Git o basico 82 / 84

Bart TrojanowskiHi Marcello,

* Marcello Henrique <faraohh@gmail.com> [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

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Perguntas?

Perguntas?

Marcello Henrique, faraohh@gmail.com Git o basico 83 / 84

ConceitosRepositorioUsando GIT

ComandosBranchingRemotes

Perguntas?

Obrigado!

Marcello Henrique, faraohh@gmail.com Git o basico 84 / 84

top related