Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o...
Transcript of Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o...
![Page 1: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/1.jpg)
@lfzawacki3 de Outubro de 2011 1/56
Git Over Heeeeeere!
Lucas Fialho Zawacki
![Page 2: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/2.jpg)
@lfzawacki3 de Outubro de 2011 2/56
Sobre mim
● Cientista da Computação 8º semestre● Ex-bolsista do Grupo PET Computação● Participação como estudando no Google
Summer of Code 2011● Wine: http://www.winehq.org/
![Page 3: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/3.jpg)
@lfzawacki3 de Outubro de 2011 3/56
Esta palestra
● Introdução ao versionamento de código● Motivação para um sistema como o Git● Decisões chave de projeto do Git● Lista de comandos úteis● Demonstrações práticas● Dicas úteis
![Page 4: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/4.jpg)
@lfzawacki3 de Outubro de 2011 4/56
Git
● Criado por Linus Torvalds● Substituto para o BitKeeper● É usado largamente no
desenvolvimento do Linux● Muito popular atualmente
![Page 5: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/5.jpg)
@lfzawacki3 de Outubro de 2011 5/56
Motivacional
● Inspirado por The Git Parable [1]● Um programador, um computador, um destino● Escrever e gerenciar o código de um software
complicado
[1] : http://tom.preston-werner.com/2009/05/19/the-git-parable.html
![Page 6: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/6.jpg)
@lfzawacki3 de Outubro de 2011 6/56
Tentativa 1 - Snapshots
copia-1 copia-2 copia-3
...copia-42
![Page 7: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/7.jpg)
@lfzawacki3 de Outubro de 2011 7/56
Tentativa 1 - Snapshots
copia-1 copia-2 copia-3
...copia-42
Código e arquivos iniciais.
Updates automáticos
no twitter.
Banco de dados com
yaml.
Versão 1.0 rodando no
servidor.
![Page 8: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/8.jpg)
@lfzawacki3 de Outubro de 2011 8/56
Tentativa 1 - Análise
● Vantagens● Simples● Ordenação fácil (nome ou data dos arquivos)
● Desvantagens● Exige significativo esforço do usuário● Desenvolvimento é sempre linear?
![Page 9: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/9.jpg)
@lfzawacki3 de Outubro de 2011 9/56
Tentativa 1 - Problema
copia-42 copia-43 copia-44
Versão 1.0 rodando no
servidor.
gettimeofday função maldita
Nunca programe e
dirija.
![Page 10: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/10.jpg)
@lfzawacki3 de Outubro de 2011 10/56
copia-42 copia-43 copia-44
Versão 1.0 rodando no
servidor.
gettimeofday função maldita
Nunca programe e
dirija.
Tentativa 1 – Bugs!
![Page 11: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/11.jpg)
@lfzawacki3 de Outubro de 2011 11/56
copia-42 copia-43 copia-44
Versão 1.0 rodando no
servidor.
gettimeofday função maldita
Nunca programe e
dirija
Tentativa 1 – Bugs!
copia-??
Corrigido exploit que permitia a lobotomia não autorizada do
usuário
![Page 12: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/12.jpg)
@lfzawacki3 de Outubro de 2011 12/56
Tentativa 1 - Problema
● Qual o nome da próxima versão?● copia-43● copia-45● copia-43-2● Nenhuma das acima● Todas acima
![Page 13: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/13.jpg)
@lfzawacki3 de Outubro de 2011 13/56
Tentativa 2 – Branches
● Nome da cópia não importa● Usar representação em forma de árvore
● Cada raiz é a 'última versão do código'● Cada versão aponta para sua versão anterior
![Page 14: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/14.jpg)
@lfzawacki3 de Outubro de 2011 14/56
Tentativa 2 - Branches
A B C
D
...
![Page 15: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/15.jpg)
@lfzawacki3 de Outubro de 2011 15/56
Tentativa 2 – Nomes são importantes
A B C
D
...
Branches→ C D
![Page 16: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/16.jpg)
@lfzawacki3 de Outubro de 2011 16/56
Tentativa 2 - Análise
● Vantagens● Mais organizado● Versões alternativas do código● Não é realmente complicado. O “ponteiro” para o
pai pode ser guardado junto com a mensagem.
● Desvantagens● Precisamos de uma maneira para juntar o trabalho
feito em diferentes branches
![Page 17: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/17.jpg)
@lfzawacki3 de Outubro de 2011 17/56
Tentativa 2 – Efeito Colateral
A B C
D
Branches→ F (master) D (1.1) H (novo-bd)
E F
G H
![Page 18: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/18.jpg)
@lfzawacki3 de Outubro de 2011 18/56
Recapitulando
● Versões ordenadas temporalmente de todos estágios de desenvolvimento
● Branches de desenvolvimento alternativos● Dados em uma versão
● Código● Nome● Nome do Pai● Mensagem
![Page 19: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/19.jpg)
@lfzawacki3 de Outubro de 2011 19/56
Mais usuários
● Chegamos a um ponto em que queremos trabalhar em conjunto com outros desenvolvedores
● Como acessar o “repositório” de diferentes computadores?● Centralizado● Distribuído
![Page 20: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/20.jpg)
@lfzawacki3 de Outubro de 2011 20/56
Sistema distribuído
A B C
D
Branches
E F
G H
Computador 1
A B C
D
Branches
E F
G H
Computador 2
![Page 21: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/21.jpg)
@lfzawacki3 de Outubro de 2011 21/56
Sistema distribuído
A B C
D
Branches
E F
G H
Computador 1
A B C
D
Branches
E F
G H
Computador 2
I1 J1
I2 J2
K2 L2
M2
Refatorando o código do raio laser mortal.
Consultas usando o novo banco de dados.
Aumentando o poder de
destruição.
![Page 22: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/22.jpg)
@lfzawacki3 de Outubro de 2011 22/56
Múltiplas cópias do repositório
● Para que este esquema funcione precisamos de algumas coisas:● Informação sobre o autor de cada versão● Unicidade do nome de cada versão
● Podemos contar com alguns fatos● Existe um pai comum entre qualquer duas versões.● Pode-se misturar os dois repositórios em um
momento futuro e criar uma “única” cópia novamente.– Desenvolvimento “offline”
![Page 23: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/23.jpg)
@lfzawacki3 de Outubro de 2011 23/56
Nome e autor da versão
● Podemos guardar o nome do autor da versão juntamente com a mensagem.
● Podemos usar o conteúdo da mensagem para criar um hash único.● Git usa SHA1
![Page 24: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/24.jpg)
@lfzawacki3 de Outubro de 2011 24/56
Merges
A
B C
Branches→ A (master) C (alternativo)
![Page 25: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/25.jpg)
@lfzawacki3 de Outubro de 2011 25/56
Merges – Fast Forward
A B C
Branches
master + alternativo (C)
Branches→ C (master) C (alternativo)
![Page 26: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/26.jpg)
@lfzawacki3 de Outubro de 2011 26/56
Merges – 2 pais
A B C
E
D
F G
H I
Branches
Gráficos
Lógica
Som
Branches→ D (logic) G (graphics) I (sound)
![Page 27: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/27.jpg)
@lfzawacki3 de Outubro de 2011 27/56
Merges – 2 pais
A B C
E
D
F G
H I
Branches
Gráficos
Lógica
Som
GD
Branches→ GD (logic) GD (graphics) I (sound)
Versão especial para o merge.
![Page 28: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/28.jpg)
@lfzawacki3 de Outubro de 2011 28/56
Merges – 2 pais
A B C
E
D
F G
H I
Branches
Gráficos
Lógica
Som
GD GDI
Branches→ GDI (logic) GDI (graphics) GDI (sound)
![Page 29: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/29.jpg)
@lfzawacki3 de Outubro de 2011 29/56
Duplicação
● Nosso sistema de versionamento está “pronto”, mas algumas coisas poderiam ser feitas melhor.
● Sistema de snapshots usa muita memória e guarda diversas vezes o mesmo arquivo.
● Não existe uma maneira fácil de visualizar a diferença entre dois snapshots do software.
![Page 30: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/30.jpg)
@lfzawacki3 de Outubro de 2011 30/56
Blobs
A B C DCódigo e arquivos iniciais.
Updates automáticos
no twitter.
Banco de dados com
yaml.
Versão 1.0 rodando no
servidor.
main.cREADME
main.c'twitter.c
README
main.c''database.c
twitter.cREADME
main.c'''database.c'
twitter.cREADME'
![Page 31: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/31.jpg)
@lfzawacki3 de Outubro de 2011 31/56
Blobs
A B C DCódigo e arquivos iniciais.
Updates automáticos
no twitter.
Banco de dados com
yaml.
Versão 1.0 rodando no
servidor.
main.cREADME
main.c'twitter.c
README
main.c''database.c
twitter.cREADME
main.c'''database.c'
twitter.cREADME'
Repositório
Disco main.c README twitter.c database.c database.c'main.c', main.c'', main.c''' twitter.c README'
main.c README README twitter.c
![Page 32: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/32.jpg)
@lfzawacki3 de Outubro de 2011 32/56
Blobs
A B C DCódigo e arquivos iniciais.
Updates automáticos
no twitter.
Banco de dados com
yaml.
Versão 1.0 rodando no
servidor.
main.cREADME
main.c'twitter.c
README
main.c''database.c
twitter.cREADME
main.c'''database.c'
twitter.cREADME'
Repositório
Disco(sem cópias)
main.c README main.c' twitter.c main.c'' database.c main.c''' database.c' README'
![Page 33: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/33.jpg)
@lfzawacki3 de Outubro de 2011 33/56
Blobs
A B C DCódigo e arquivos iniciais.
Updates automáticos
no twitter.
Banco de dados com
yaml.
Versão 1.0 rodando no
servidor.
main.cREADME
main.c'twitter.c
README
main.c''database.c
twitter.cREADME
main.c'''database.c'
twitter.cREADME'
Repositório
Blobs
main.c README main.c' twitter.c main.c'' database.c main.c''' database.c' README'
![Page 34: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/34.jpg)
@lfzawacki3 de Outubro de 2011 34/56
Diff
● Como descobrir quais foram as mudanças que ocorreram entre duas versões?● Guardar apenas as modificações entre cada duas
versões– Usa menos memória– Requer mais passos para recuperar um arquivo
● Calcular o diff quando for requisitado– Usa mais memória– Recupera arquivos instantaneamente
![Page 35: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/35.jpg)
@lfzawacki3 de Outubro de 2011 35/56
Compressão
● Das duas abordagens, Git usa a segunda. Guarda cópias dos arquivos e calcula diff quando necessário. Questão de velocidade.
● Horrível quando temos arquivos enormes com pequenas modificações
● As blobs podem permanecer comprimidas e serem descomprimidas quando necessário.
![Page 36: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/36.jpg)
@lfzawacki3 de Outubro de 2011 36/56
Git
● Acabamos de construir “bottom up” o Git com a maioria de suas features.
● Versão ou Snapshot = Commit● Então vamos meter a mão na massa!
![Page 37: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/37.jpg)
@lfzawacki3 de Outubro de 2011 37/56
Começando...
● Um novo repositório
$ git init .
● De um repositório já existente
$ git clone [email protected]:lfzawacki/cm.git
![Page 38: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/38.jpg)
@lfzawacki3 de Outubro de 2011 38/56
Staging Area
$ git status
$ git add [arquivo]
![Page 39: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/39.jpg)
@lfzawacki3 de Outubro de 2011 39/56
Commits
$ git commit
$ git commit m “Sua mensagem”
$ git commit am “Sua mensagem”
![Page 40: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/40.jpg)
@lfzawacki3 de Outubro de 2011 40/56
Checkout
$ git checkout numero_revisao
$ git checkout HEAD
$ git checkout HEAD^
$ git checkout HEAD~3
![Page 41: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/41.jpg)
@lfzawacki3 de Outubro de 2011 41/56
Reset
$ git reset arquivo
$ git reset HEAD^ arquivo
$ git reset HEAD^^ arquivo
$ git reset hard
![Page 42: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/42.jpg)
@lfzawacki3 de Outubro de 2011 42/56
Branches
$ git branch
$ git branch novo_branch
$ git checkout novo_branch
$ git branch d novo_branch
![Page 43: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/43.jpg)
@lfzawacki3 de Outubro de 2011 43/56
Merge
$ git checkout branch1
… trabalha duro …
$ git checkout branch2
$ git merge branch1
![Page 44: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/44.jpg)
@lfzawacki3 de Outubro de 2011 44/56
Help
$ git help commit
$ git help checkout
$ git help log
$ git help status
![Page 45: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/45.jpg)
@lfzawacki3 de Outubro de 2011 45/56
Log
$ git log
$ git log p 2
$ git log stat
$ git log shortstat
![Page 46: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/46.jpg)
@lfzawacki3 de Outubro de 2011 46/56
Amend
$ git commit m “Minhas mudancas”
$ git commit amend m “Outra mensagem”
… modifica um arquivo ...
$ git add arquivo
$ git commit amend m “Explica mudança”
![Page 47: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/47.jpg)
@lfzawacki3 de Outubro de 2011 47/56
Diff
$ git diff
$ git diff HEAD^
$ git diff HEAD^ HEAD~20
$ git diff HEAD^ arquivo
![Page 48: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/48.jpg)
@lfzawacki3 de Outubro de 2011 48/56
Patches
$ git formatpatch HEAD^
$ git formatpatch HEAD^^
$ git formatpatch k HEAD^
![Page 49: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/49.jpg)
@lfzawacki3 de Outubro de 2011 49/56
Stash
$ git stash
$ git stash pop
$ git stash list
$ git stash show
![Page 50: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/50.jpg)
@lfzawacki3 de Outubro de 2011 50/56
Configurações
● .gitconfig● .gitignore
![Page 51: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/51.jpg)
@lfzawacki3 de Outubro de 2011 51/56
Interfaces gráficas
$ gitk
$ git instaweb
● Outras ...
![Page 52: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/52.jpg)
@lfzawacki3 de Outubro de 2011 52/56
Frontends
● Linha de comando● msysgit: http://code.google.com/p/msysgit/● TortoiseGit: http://code.google.com/p/tortoisegit/
![Page 53: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/53.jpg)
@lfzawacki3 de Outubro de 2011 53/56
Hospedagem
● http://repo.or.cz Hospdagem gratuita● http://github.com Rede social + hospedagem
(gratuito para open source)● Self hosted
![Page 54: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/54.jpg)
@lfzawacki3 de Outubro de 2011 54/56
Outros sistemas
● Centralizado● Subversion● CVS
● Distribuído● Mercurial● Bazaar● Fossil
![Page 55: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/55.jpg)
@lfzawacki3 de Outubro de 2011 55/56
Referências
● Git Magic: http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html
● Pro Git: http://progit.org/book/
● Git Cheatsheet: http://byte.kde.org/~zrusin/git/git-cheat-sheet-medium.png
![Page 56: Git Over Heeeeeere! · Introdução ao versionamento de código Motivação para um sistema como o Git Decisões chave de projeto do Git Lista de comandos úteis Demonstrações práticas](https://reader034.fdocument.pub/reader034/viewer/2022052101/603bc3d38136220ef320b7de/html5/thumbnails/56.jpg)
@lfzawacki3 de Outubro de 2011 56/56
Obrigado!
Perguntas?
http://blog.lfzawacki.com
@lfzawacki