Git

1,500 views

Published on

Palestra realizada na Softa sobre controle de versões com git.
Um artigo baseado nessa palestra pode ser lido em: http://blog.softa.com.br/2009/9/controle-de-vers-es-com-o-git

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,500
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Git

  1. 1. GIT – a silly introduction
  2. 2. Referências ● http://www-cs-students.stanford.edu/~blynn/gitmagic/ ● http://github.com/blynn/gitmagic ● git clone git://github.com/blynn/gitmagic.git ● http://www.eecs.harvard.edu/~cduan/technical/git/
  3. 3. Repositórios ● Conjunto de commits ● Referências a commits (heads) ● Criado por um git init ou git clone
  4. 4. Commits ● Conjunto de arquivos em um ponto no tempo ● Referência ao commit pai ● Um nome sha1 ● Repositório: Grafo Direcionado Acíclico de commits ● Operar versões = Navegar no grafo
  5. 5. Heads ● Aponta para um commit ● HEAD = head atual ● Fazendo referências: ● Pelo sha1 ● Primeiros caracteres do sha1 ● Pelo nome de um head ● Head + ^ (HEAD^ ou master^) ● Head + ~num (HEAD~2)
  6. 6. Alguns comandos ● Git log – Mostra todos os commits de HEAD até o commit inicial ● Git status – Mostra arquivos modificados desde HEAD ● Git diff – Mostra modificações desde HEAD
  7. 7. Branching ● Branch =~ head ● Preciso modificar um estado anterior sem modificar o estado atual ● Criado com git branch nome_do_branch ● Sempre commitar tudo antes!
  8. 8. Branching ● Git checkout [branch] – Alterna entre branches ● Modifica o estado de HEAD ● Reescreve os arquivos do diretório ● Git branch – Mostra branches ● Git diff head1..head2 – diff entre heads ● Git diff head1...head2 – mostra diff de head2 até o pai em comum ● Git log head1..head2 – log entre heads
  9. 9. Merging ● Sempre commitar tudo antes! ● Git merge [head] ● Identifica o ancestral comum ● Se current = ancestral então fast-forward ● Senão tenta fazer o merge em current ● Se não existem conflitos cria um commit com dois pais, o current e o merge. ● Se existir conflitos insere marcadores e não cria commit.
  10. 10. Colaborando ● Git clone repositorio ● Cria o diretório e executa o git init ● Copia todos os commits e heads ● Adiciona uma referência ao repositório chamada origin ● Adiciona heads remotos ● Configura uma head para rastrear o head corrente remoto
  11. 11. Colaborando ● Inserindo branchs para rastrear heads remotos ● git branch --track [new-local-branch] [remote-branch] ● Atualizando com repositório remoto ● Git fetch ● Fazendo merge nos heads locais ● Git pull [repositório] [head remoto] ● executa um fetch automaticamente
  12. 12. Colaborando ● Git push [repositório remoto] [head remoto] ● Sem argumentos envia todos os heads que estão rastreando heads remotos ● Envia commits ● Reaponta o head remoto no repositório remoto ● Reaponta head remoto no repositório local ● Merge precisa ser um fast-forward
  13. 13. Branches remotos ● Estando no novo branch ● Criando branch remoto ● git push origin new-branch ● git checkout [some-other-branch] ● git branch -f new-branch origin/new-branch ● git checkout new-branch
  14. 14. Branchs remotos ● Listando ● Git branch -r ● Excluindo ● git push [repositório remoto] :[head remoto]
  15. 15. Back to the future ● Sempre commitar tudo antes! ● git checkout sha1 ● Se gerar novos commits estou em universo alternativo (branch) ● Para voltar basta (there's no place like home) ● git checkout master
  16. 16. Desfazendo commits ● Git reset [head] ● --soft – Deixa todas as modificações nos arquivos ● --hard – Perde as modificações ● --merge – Reseta o head e modifica os arquivos que diferem do head corrente
  17. 17. Desfazendo commits ● git commit ... ● git reset --soft HEAD^ ● Editar arquivos ● git commit -a -c ORIG_HEAD ● O reset copia o head antigo para ORIG_HEAD ● Para refazer o commit inicie pela mesma mensagem ou use o -C
  18. 18. Corrigindo último commit ● git commit –amend ● É possível modificar a mensagem ● Adicionar e modificar arquivos
  19. 19. Removendo histórico ● git filter-branch --tree-filter 'rm top/secret/file' HEAD ● O comando não pode retornar erro em nenhum commit. ● -f pode ser usado com o rm ● Para forçar um push que não seja fast-forward usar o + antes do nome do head remoto ● Git push origin +master
  20. 20. Encontrando culpados ● Git blame

×