git

Download Git

If you can't read please download the document

Upload: diogo-biazus

Post on 20-May-2015

1.348 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

  • 1. GIT a silly introduction

2. Referncias 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. Repositrios Conjunto de commits Referncias a commits (heads) Criado por um git init ou git clone 4. Commits Conjunto de arquivos em um ponto no tempo Referncia ao commit pai Um nome sha1 Repositrio: Grafo Direcionado Acclico de commits Operar verses = Navegar no grafo 5. Heads Aponta para um commit HEAD = head atual Fazendo referncias: Pelo sha1 Primeiros caracteres do sha1 Pelo nome de um head Head + ^ (HEAD^ ou master^) Head + ~num (HEAD~2) 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 modificaes desde HEAD 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. Branching Git checkout [branch] Alterna entre branches Modifica o estado de HEAD Reescreve os arquivos do diretrio 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. Merging Sempre commitar tudo antes! Git merge [head] Identifica o ancestral comum Se current = ancestral ento fast-forward Seno tenta fazer o merge em current Se no existem conflitos cria um commit com dois pais, o current e o merge. Se existir conflitos insere marcadores e no cria commit. 10. Colaborando Git clone repositorio Cria o diretrio e executa o git init Copia todos os commits e heads Adiciona uma referncia ao repositrio chamada origin Adiciona heads remotos Configura uma head para rastrear o head corrente remoto 11. Colaborando Inserindo branchs para rastrear heads remotos git branch --track [new-local-branch] [remote-branch] Atualizando com repositrio remoto Git fetch Fazendo merge nos heads locais Git pull [repositrio] [head remoto] executa um fetch automaticamente 12. Colaborando Git push [repositrio remoto] [head remoto] Sem argumentos envia todos os heads que esto rastreando heads remotos Envia commits Reaponta o head remoto no repositrio remoto Reaponta head remoto no repositrio local Merge precisa ser um fast-forward 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. Branchs remotos Listando Git branch -r Excluindo git push [repositrio remoto] :[head remoto] 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. Desfazendo commits Git reset [head] --soft Deixa todas as modificaes nos arquivos --hard Perde as modificaes --merge Reseta o head e modifica os arquivos que diferem do head corrente 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. Corrigindo ltimo commit git commit amend possvel modificar a mensagem Adicionar e modificar arquivos 19. Removendo histrico git filter-branch --tree-filter 'rm top/secret/file' HEAD O comando no pode retornar erro em nenhum commit. -f pode ser usado com o rm Para forar um push que no seja fast-forward usar o + antes do nome do head remoto Git push origin +master 20. Encontrando culpados Git blame