Upload
marcello-henrique
View
2.751
Download
3
Embed Size (px)
Citation preview
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
ConceitosRepositorioUsando GIT
1 ConceitosSource Control ManagerDecentralizacaoHistoria
2 RepositorioEstruturaObjetos
3 Usando GITComandosBranchingRemotes
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] Git o basico 3 / 84
ConceitosRepositorioUsando GIT
Source Control ManagerDecentralizacaoHistoria
SCM componentes
Arvore de trabalho
diretorios
arquivos
Marcello Henrique, [email protected] Git o basico 4 / 84
ConceitosRepositorioUsando GIT
Source Control ManagerDecentralizacaoHistoria
SCM componentes
Repositorio de conteudo
arquivos
a.cv1
Marcello Henrique, [email protected] Git o basico 5 / 84
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
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
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
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
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
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
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
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
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
ConceitosRepositorioUsando GIT
Source Control ManagerDecentralizacaoHistoria
SCM operacoes II
Referencias
tag
branch
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] Git o basico 11 / 84
ConceitosRepositorioUsando GIT
Source Control ManagerDecentralizacaoHistoria
Operacoes SCM
Decentralizado
clone
pull, fetch
push
Marcello Henrique, [email protected] Git o basico 12 / 84
ConceitosRepositorioUsando GIT
Source Control ManagerDecentralizacaoHistoria
Decentralizacao
upstream
Repositorio publico
Marcello Henrique, [email protected] Git o basico 13 / 84
ConceitosRepositorioUsando GIT
Source Control ManagerDecentralizacaoHistoria
Decentralizacao
upstream
local
Fazendo um clone local
Marcello Henrique, [email protected] 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, [email protected] Git o basico 13 / 84
ConceitosRepositorioUsando GIT
Source Control ManagerDecentralizacaoHistoria
Decentralizacao
upstream
pristine
topic Atopic B
Empurando mudancas entre repositorios
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] Git o basico 22 / 84
ConceitosRepositorioUsando GIT
EstruturaObjetos
Objetos
Conteudo enderecavel
type size
data
Marcello Henrique, [email protected] Git o basico 23 / 84
ConceitosRepositorioUsando GIT
EstruturaObjetos
Objetos
Conteudo enderecavel
type size
data
SH
A1
52a0ff44aba8599f43a5d821c421af316cb7305
Marcello Henrique, [email protected] Git o basico 23 / 84
ConceitosRepositorioUsando GIT
EstruturaObjetos
Objetos
Conteudo enderecavel
type size
data
52a0ff44aba8599f43a5d821c421af316cb7305
Marcello Henrique, [email protected] Git o basico 23 / 84
ConceitosRepositorioUsando GIT
EstruturaObjetos
Objetos
Conteudo enderecavel type size
data
52a0ff44aba8599f43a5d821c421af316cb73051
Marcello Henrique, [email protected] Git o basico 23 / 84
ConceitosRepositorioUsando GIT
EstruturaObjetos
Objetos
4 Tipos
Blobs
"blob" size
file data
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] Git o basico 23 / 84
ConceitosRepositorioUsando GIT
EstruturaObjetos
Objetos
Imutavel
type size
data
Marcello Henrique, [email protected] Git o basico 23 / 84
ConceitosRepositorioUsando GIT
EstruturaObjetos
Objetos
Imutavel
type size
data
type size
data’
Marcello Henrique, [email protected] Git o basico 23 / 84
ConceitosRepositorioUsando GIT
EstruturaObjetos
Objetos
Imutavel
type size
data
type size
data’
SH
A1
8a9fd66b8bb939638564ebfdecc23b5d58070fc8
Marcello Henrique, [email protected] Git o basico 23 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
ComandosSintaxe
$ git <options> <command> <options>
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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 [email protected]$ git config --global color.pager true$ git config --global color.ui auto
Marcello Henrique, [email protected] 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 [email protected]$ git config --global color.pager true$ git config --global color.ui auto
Marcello Henrique, [email protected] Git o basico 31 / 84
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
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
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
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Ignorar arquivos
$ cat .gitignore
*.o
*~
Marcello Henrique, [email protected] 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, [email protected] Git o basico 36 / 84
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
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes$ echo test > test
working tree
repository
.git
master
HEAD
index
test
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] Git o basico 37 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Inspecao
$ git status
mostra. . .
staged (Modificados)
unstaged (Nao modificados)
untracked (Nao versionados)
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] Git o basico 40 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Inspecao
Um commit antes do HEAD
HEAD^ == HEAD∼1
Marcello Henrique, [email protected] Git o basico 41 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Inspecao
Alguns commits antes do HEAD
HEAD^^^ == HEAD∼3
Marcello Henrique, [email protected] Git o basico 42 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Inspecao
Alguns commits antes do master
master^^^ == master∼3
Marcello Henrique, [email protected] Git o basico 43 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Inspecao
Voce quer ver os de ontem?
@{yesterday} == HEAD@{yesterday}
Marcello Henrique, [email protected] 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, [email protected] Git o basico 45 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Inspecao
Algumas mudancas atras do master?
master@{3}
Marcello Henrique, [email protected] Git o basico 46 / 84
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
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
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
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
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
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
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Inspecao
git log e impressionante!
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] Git o basico 56 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Inspecao
Limita por mudancas especıficas no caminho. . .$ git log -- some/file
Marcello Henrique, [email protected] 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, [email protected] Git o basico 58 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Referencias
Mais rapido
Mais maleavel
Discartavel
3 tipos basico
Marcello Henrique, [email protected] Git o basico 59 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Referencias
Mais rapido
Mais maleavel
Discartavel
3 tipos basico
Marcello Henrique, [email protected] Git o basico 59 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Referencias
Mais rapido
Mais maleavel
Discartavel
3 tipos basico
Marcello Henrique, [email protected] Git o basico 59 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Referencias
Mais rapido
Mais maleavel
Discartavel
3 tipos basico
Marcello Henrique, [email protected] Git o basico 59 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Local branches
$ git branch -l
branch1
branch2
* master
.git/refs/heads/<branch>
Marcello Henrique, [email protected] Git o basico 60 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
tags
$ git tag -l
tag1
tag2
tag3
.git/refs/tags/<tag>
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] Git o basico 64 / 84
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
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
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Comecamos com uma arvore
masterA
Marcello Henrique, [email protected] Git o basico 67 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes$ git checkout -b
bug-fix
master
HEAD
bug−fix A
Marcello Henrique, [email protected] Git o basico 67 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes$ git commit -a -m‘‘B’’
master
HEAD
Bbug−fix
A
Marcello Henrique, [email protected] Git o basico 67 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes$ git commit -a -m‘‘C’’
master
HEAD
C
B
bug−fix
A
Marcello Henrique, [email protected] Git o basico 67 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Voce tem uma ideia arrasadora
master
HEAD
C
B
bug−fix
A
Marcello Henrique, [email protected] 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, [email protected] Git o basico 67 / 84
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Mesclando
Mais um exemplo
A
one
Marcello Henrique, [email protected] Git o basico 69 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Mesclando
Duas branches
A
B C
one two
Marcello Henrique, [email protected] Git o basico 69 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Mesclando$ git checkout -b three
two
A
B C
one twothree
Marcello Henrique, [email protected] 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, [email protected] Git o basico 69 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Mesclando
A
B C
D
E F
Gone two
three
Marcello Henrique, [email protected] Git o basico 69 / 84
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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: [email protected] 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: [email protected] 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, [email protected] 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, [email protected] Git o basico 75 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Objetos perdidos
Lembram dos objetos perdidos ?
Marcello Henrique, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] 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, [email protected] Git o basico 81 / 84
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
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Perguntas?
Perguntas?
Marcello Henrique, [email protected] Git o basico 83 / 84
ConceitosRepositorioUsando GIT
ComandosBranchingRemotes
Perguntas?
Obrigado!
Marcello Henrique, [email protected] Git o basico 84 / 84