89
Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br #2 - Git - DAG

#2 - Git - DAG

Embed Size (px)

Citation preview

Page 1: #2 - Git - DAG

Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br

#2 - Git - DAG

Page 2: #2 - Git - DAG

Rodrigo [email protected]

http://www.agilecode.com.br

• Arquiteto de Software na Gennera • Professor na Agile Code • Autor na Java Magazine e PacktPub • Palestrante

Page 3: #2 - Git - DAG

http://www.youtube.com/rodrigobranas

Page 4: #2 - Git - DAG

Obtendo as chaves do castelo...

Page 5: #2 - Git - DAG

DAG, ou Directed Acyclic Graph, é o conceito fundamental utilizado pelo Git

para representar a trajetória dos commits ao longo do tempo.

Page 6: #2 - Git - DAG
Page 7: #2 - Git - DAG

Cada commit representa o estado do repositório em um determinado

momento do tempo.

Page 8: #2 - Git - DAG

Criando um commit...

Page 9: #2 - Git - DAG

echo a > a.txt echo b > b.txt

Page 10: #2 - Git - DAG

git commit

Page 11: #2 - Git - DAG
Page 12: #2 - Git - DAG

git status

Page 13: #2 - Git - DAG
Page 14: #2 - Git - DAG
Page 15: #2 - Git - DAG

git add a.txt git status

git add b.txt git status

Page 16: #2 - Git - DAG
Page 17: #2 - Git - DAG

git add -A ou --all git status

Page 18: #2 - Git - DAG
Page 19: #2 - Git - DAG

Espera, mas como exatamente os arquivos ficam armazenados?

Page 20: #2 - Git - DAG

tree .git

Page 21: #2 - Git - DAG
Page 22: #2 - Git - DAG

O Git utiliza o algoritmo de dispersão criptográfica SHA-1 para calcular um hash de 40 bytes com o objetivo de

indexar, identificar e manter a integridade de cada arquivo.

Page 23: #2 - Git - DAG
Page 24: #2 - Git - DAG

git hash-object a.txt

Page 25: #2 - Git - DAG
Page 26: #2 - Git - DAG

git commit -m "a.txt e b.txt"

Page 27: #2 - Git - DAG
Page 28: #2 - Git - DAG

git status

Page 29: #2 - Git - DAG
Page 30: #2 - Git - DAG

git log

Page 31: #2 - Git - DAG
Page 32: #2 - Git - DAG

git log -p ou --patch

Page 33: #2 - Git - DAG
Page 34: #2 - Git - DAG

E agora, como o commit se relaciona com os arquivos?

Page 35: #2 - Git - DAG

git cat-file -p <object>

Page 36: #2 - Git - DAG
Page 37: #2 - Git - DAG
Page 38: #2 - Git - DAG
Page 39: #2 - Git - DAG

commit a9ae tree f4b3 parent

tree f4b3 100644 blob 7898 a.txt 100644 blob 6178 b.txt

blob 7898 a

blob 6178 b

Page 40: #2 - Git - DAG

Vamos fazer mais um commit...

Page 41: #2 - Git - DAG

echo c > c.txt git status git add -A git commit -m "c.txt"

Page 42: #2 - Git - DAG
Page 43: #2 - Git - DAG

git log

Page 44: #2 - Git - DAG
Page 45: #2 - Git - DAG

E agora, como o commit se relaciona com os arquivos?

Page 46: #2 - Git - DAG

git cat-file -p <object>

Page 47: #2 - Git - DAG
Page 48: #2 - Git - DAG
Page 49: #2 - Git - DAG
Page 50: #2 - Git - DAG

commit a9ae tree f4b3 parent

commit 372d tree d11b parent a9ae

tree f4b3 100644 blob 7898 a.txt 100644 blob 6178 b.txt

tree d11b 100644 blob 7898 a.txt 100644 blob 6178 b.txt 100644 blob f2ad c.txt

blob 7898 a

blob 6178 b

blob f2ad c

Page 51: #2 - Git - DAG

E se um arquivo for alterado?

Page 52: #2 - Git - DAG
Page 53: #2 - Git - DAG

git status

Page 54: #2 - Git - DAG
Page 55: #2 - Git - DAG

git diff

Page 56: #2 - Git - DAG
Page 57: #2 - Git - DAG

git add -A

Page 58: #2 - Git - DAG
Page 59: #2 - Git - DAG

git status

Page 60: #2 - Git - DAG
Page 61: #2 - Git - DAG

git diff

Page 62: #2 - Git - DAG
Page 63: #2 - Git - DAG

git diff --staged

Page 64: #2 - Git - DAG
Page 65: #2 - Git - DAG

git commit -m "Alterando c.txt"

Page 66: #2 - Git - DAG
Page 67: #2 - Git - DAG

git log

Page 68: #2 - Git - DAG
Page 69: #2 - Git - DAG

E agora, como o commit se relaciona com os arquivos?

Page 70: #2 - Git - DAG

git cat-file -p <object>

Page 71: #2 - Git - DAG
Page 72: #2 - Git - DAG
Page 73: #2 - Git - DAG
Page 74: #2 - Git - DAG

commit a9ae tree f4b3 parent

commit 372d tree d11b parent a9ae

commit 7f64 tree 6300 parent 372d

tree f4b3 100644 blob 7898 a.txt 100644 blob 6178 b.txt

tree d11b 100644 blob 7898 a.txt 100644 blob 6178 b.txt 100644 blob f2ad c.txt

tree 6300 100644 blob 7898 a.txt 100644 blob 6178 b.txt 100644 blob 16f9 c.txt

blob 7898 a

blob 6178 b

blob f2ad c

blob 16f9 c2

Page 75: #2 - Git - DAG

E se apenas o nome do arquivo for alterado?

Page 76: #2 - Git - DAG

mv c.txt c2.txt

Page 77: #2 - Git - DAG
Page 78: #2 - Git - DAG

git status

Page 79: #2 - Git - DAG
Page 80: #2 - Git - DAG

git add -A git status git commit -m "Alterando o nome do arquivo para c2.txt"

Page 81: #2 - Git - DAG
Page 82: #2 - Git - DAG

git log --oneline

Page 83: #2 - Git - DAG
Page 84: #2 - Git - DAG

E agora, como fica?

Page 85: #2 - Git - DAG

git cat-file -p <object>

Page 86: #2 - Git - DAG
Page 87: #2 - Git - DAG
Page 88: #2 - Git - DAG

commit a9ae tree f4b3 parent

commit 372d tree d11b parent a9ae

commit 7f64 tree 6300 parent 372d

tree f4b3 100644 blob 7898 a.txt 100644 blob 6178 b.txt

tree d11b 100644 blob 7898 a.txt 100644 blob 6178 b.txt 100644 blob f2ad c.txt

tree 6300 100644 blob 7898 a.txt 100644 blob 6178 b.txt 100644 blob 16f9 c.txt

blob 7898 a

blob 6178 b

blob f2ad c

blob 16f9 c2

commit b274 tree 15eb parent 7f64

tree 15eb 100644 blob 7898 a.txt 100644 blob 6178 b.txt 100644 blob 16f9 c2.txt

Page 89: #2 - Git - DAG

Rodrigo Branas

Site: http://www.agilecode.com.br Twitter: @rodrigobranas Facebook: http://www.facebook.com/canalrodrigobranas SlideShare: http://www.slideshare.com/rodrigobranas YouTube: http://www.youtube.com/rodrigobranas LinkedIn: http://br.linkedin.com/in/rodrigobranas +Plus: https://plus.google.com/+RodrigoBranas GitHub: http://www.github.com/rodrigobranas