Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Git

1,030 views

Published on

Introdução ao sistema de versionamento distríbuido git.

Published in: Technology
  • Be the first to comment

Git

  1. 1. Git John Henrique Teixeira de Godoi Instituto de Ciˆncias e Tecnologia e Universidade Federal de S˜o Paulo a S˜o Jos´ dos Campos – SP, Brasil a e Outubro, 2011Programa de Educa¸˜o em Software Livre - PESL ca
  2. 2. O quˆ? Por quˆ? Pra quˆ? e e e Rotina no gitAvisos! Esses slides s˜o baseados principalmente no GitReference. a Algumas tradu¸˜es podem n˜o ser fi´is mas se adequavam co a e melhor ao contesto. Al´m do cont´udo desses slides tem a parte pr´tica que ser´ e e a a exibida durante a apresenta¸˜o. ca John Henrique Teixeira de Godoi Git
  3. 3. O quˆ? Por quˆ? Pra quˆ? e e e Rotina no gitIndice 1 O quˆ? Por quˆ? Pra quˆ? e e e Versionadores Distribu´ ıdos Git John Henrique Teixeira de Godoi Git
  4. 4. O quˆ? Por quˆ? Pra quˆ? e e e Rotina no gitIndice 1 O quˆ? Por quˆ? Pra quˆ? e e e Versionadores Distribu´ ıdos Git 2 Rotina no git Reposit´rio o Desenvolvimento Dividir para Conquistar e Somar resultados Compartilhando e Atualizando projetos Examinando e comparando John Henrique Teixeira de Godoi Git
  5. 5. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git GitImagine vocˆ no desenvolvimento de um sistema com milhares de e arquivos, milh˜es de linhas de c´digos e centenas de o o desenvolvedores. Como organizar, compartilhar e sincronizar tudo o que for produzido? John Henrique Teixeira de Godoi Git
  6. 6. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git Git Alguma vez vocˆ j´ quis que fazer Ctrl+Z em algum arquivo e a depois de ter desligado o computador?J´ quis fazer alguma mudan¸a no seu c´digo e ter a garantia de a c o mantˆ-lo est´vel? e a John Henrique Teixeira de Godoi Git
  7. 7. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git GitVersionadores - O que s˜o? Para que servem? Por quˆ a eus´-los? a Versionadores s˜o sistemas que permitem o gerenciamento da a manipula¸˜o de arquivos, n˜o apenas c´digos-fontes, de forma que ca a o seja poss´ trabalhar com diversas c´pias, vers˜es, do mesmo em ıvel o o momentos diferentes com a possibilidade de unific´-las, a recuper´-las, compar´-las, sincroniz´-las, manter um hist´rico do a a a o que for desenvolvido e, ainda, pessoas diferentes trabalharem sobre o mesmo arquivo em paralelo. John Henrique Teixeira de Godoi Git
  8. 8. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git GitSistemas de Versionamento Distribu´ ıdos Diferentes de seus antecessores, que necessitavam de uma aplica¸˜o servidor que centraliza-se o gerencimento dos arquivos, ca os versionadores distribu´ıdos dispensam essa necessidade com c´pias independentes do mesmo c´digo que podem comunicar o o entre si e se sincronizarem. Cada c´pia pode ser tratada com um backup de todo o sistema e o n˜o necessitam de conex˜o com a internet para que possam a a trabalhar de forma eficiente. John Henrique Teixeira de Godoi Git
  9. 9. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git GitGit Criado por Linus Torvalds em 2005. Nome vem de uma brincadeira com a g´ “git” e o Kernel ıria criado por Linus levar seu nome. Sistema de Versionamento Distribu´ com foco em seu ıdo desempenho. Desenvolvido voltado para o versionamento do kernel Linux que antes era versionado com software propriet´rio. a John Henrique Teixeira de Godoi Git
  10. 10. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git GitGit - interface Os comandos do git s˜o passados como parˆmetros ap´s a a a o chamada deste na linha de comando. git <comando><op¸˜es><parˆmetros> co a Existem interface gr´ficas, e plugins para IDE’s, que facilitam a o uso das funcionalidades do git sem ter que usar o terminal. NetBeans: http://nbgit.org/ Eclipse: http://eclipse.org/egit/ gitk e git-gui s˜o interfaces gr´ficas nativas. a a Para windows o tortoisegit ´ uma das melhores op¸˜es. e co http://code.google.com/p/tortoisegit/ John Henrique Teixeira de Godoi Git
  11. 11. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoRotina no git O uso dos comandos do git pode ser resumido em uma rotina di´ria que abragem as necessidades do cotidiano com um a versionador. John Henrique Teixeira de Godoi Git
  12. 12. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoRotina no git - cheatsheet Figure: http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html John Henrique Teixeira de Godoi Git
  13. 13. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoDeterminando territ´rio o init(-db) <op¸˜es> co Atrav´s desse comando ´ inicializado um e e reposit´rio git. o Uma op¸˜o bastante usada a –bare que permite ca a cria¸˜o de um reposit´rio sem qualquer ca o configura¸˜o pr´via. ca e clone <Endere¸oReposit´rioRemoto> c o Com este comando criasse uma c´pia de um o reposit´rio remoto para o diret´rio atual. o o John Henrique Teixeira de Godoi Git
  14. 14. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoIdentifique-se config - -global <op¸˜es> co Insere suas informa¸˜es para identificar de forma co natural sua modifica¸˜es no projeto. co user.name ’Seu nome’ user.email seuemail@servidor.com John Henrique Teixeira de Godoi Git
  15. 15. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoSelecionando add <Lista de arquivos> Com esse comando vocˆ define quais arquivos e dentro do diret´rio ser˜o versionados e o a rastreados pelo reposit´rio. o Com . todos os arquivos, diret´rios e o sub-diret´rios, existentes, ser˜o adicionados. o a rm <Lista de arquivos> Remove do rastreamento do reposit´rio a lista o de arquivos. mv <fonte><destino> O git n˜o rastreia renomea¸˜o de arquivos, e a ca esse comando ´ equivalente a (git rm –cached e orig; mv orig new; git add new). John Henrique Teixeira de Godoi Git
  16. 16. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoComo estamos? status <op¸˜es> co Mostra o estado dos arquivos. -s exibe um resumo do estado no diret´rio(??) e o no reposit´rio(A—M—D). o Adicionado, Modificado e Apagado(Deleted). John Henrique Teixeira de Godoi Git
  17. 17. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoRegistrando o momento commit <op¸˜es> co Registra as modifica¸˜es realizadas no co reposit´rio. o -a adiciona as mudan¸as realizadas (git add) ao c reposit´rio. o -m “descri¸˜o” permite colocar uma descri¸˜o ca ca geral da mudan¸as realizadas naquele registro. c Esses registros poderam ser comparados, revertidos e compartilhados posteriormente. John Henrique Teixeira de Godoi Git
  18. 18. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoDe volta do t´nel do tempo u diff Mostra a diferen¸a, linha por linha, do que foi c adicionado ou n˜o ao reposit´rio. a o - -cached apenas para o que foi adicionado HEAD (registro especial que representa o estado atual) diferen¸a entre HEAD e o ultimo registro. c ´ - -stats resumo das diferen¸as c reset <Registro> troca o cont´udo HEAD pelo registro passado e como parˆmetro. a “Ctrl+Z” do git - -hard Al´m do cont´udo do registro altera a e e ´rvore de registro e descarta todo o resto (use a com modera¸˜o). ca John Henrique Teixeira de Godoi Git
  19. 19. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoRamificando branch <op¸˜es><nome da ramifica¸˜o> co ca sem passar nenhum parˆmetro, ele listar´ as a a ramifica¸˜es existentes co passando um nome, ele criar´ uma ramifica¸˜o a a ca partir da atual -d permite excluir a ramifica¸˜o (Use com ca modera¸˜o!). ca checkout <op¸˜es><nome da ramifica¸˜o> co ca Altera qual a ramifica¸˜o est´ sendo trabalhada. ca a Obs.: Ele ir´ exigir o registro de poss´ a ıveis modifica¸˜es antes de realizar a troca. co -b cria uma nova ramifica¸˜o e depois altera ca para essa John Henrique Teixeira de Godoi Git
  20. 20. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoUnindo merge <Lista de ramifica¸˜es> co Unifica as ramifica¸˜es passadas por parˆmetro co a com a atual e os registros mais recentes ser˜o a combinados em um novo. ...::*CONFLITOS*::... git merge - -abort use mergetool e diff a vontade, resolva os conflitos e proceda com o merge novamente. John Henrique Teixeira de Godoi Git
  21. 21. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoNos “registros” anteriores do projeto... log exibe o hist´rico de registro da ramifica¸˜o o ca atual. O que inclui indentificador, nome e e-mail do usu´rio, data e hor´rio e descri¸˜o. a a ca - -oneline exibe apenas o identificador e a descri¸˜o. ca - -graph mostra um grafo com o comportamento dos registro (unifica¸˜es e ramifica¸˜es). co co tag permite criar um marco no hist´rico de forma o que se possa us´-lo para referenciar algum ponto a no hist´rico. o git log - -decorate exibe os marcos tamb´m e John Henrique Teixeira de Godoi Git
  22. 22. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoVocˆ n˜o est´ sozinho! e a a remote sem parˆmetos mostra a lista de nomes dos a reposit´rios remotos. o -v mostra, tamb´m, o endere¸o de cada e c reposit´rio para envio e busca de atualiza¸˜es. o co add <nome><endere¸o>adiciona um novo c reposit´rio com o nome e endere¸o passados por o c parˆmetro. a rm <nome>remove o reposit´rio com o nome o passado por parˆmetro a John Henrique Teixeira de Godoi Git
  23. 23. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoComunicando-se fetch <nome> faz o download das novas ramifica¸˜es e dados co do reposit´rio remoto. o pull <nome> al´m do download tenta unificar com a e ramifica¸˜o atual. ca push <nome><ramifica¸˜o> ca envia suas novas ramifica¸˜es e dados para um co reposit´rio remoto. o John Henrique Teixeira de Godoi Git
  24. 24. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoPente fino Para filtrar o hist´rico gerado pelo “log” podemos usar alguns o parˆmetros: a - -author=<autor>- -oneline -<quantidade>filtra o hist´rico o pelo “autor” mostrando os registros, limitado a uma certa “quantidade”, feitos por este. - -since, - -before, - -until, - -after={ data} filtra por uma especifica “data”, desde, antes, at´ e depois desta, e respectivamente. data pode ser escrita nas formas: 3.weeks.ago ou 2011-10-4, por exemplo - -grep=<padr˜o>busca os registros que possuam o “padr˜o” a a em suas informa¸˜esco - -S<mudan¸a>procura no hist´rico onde foi inserida a c o “mudan¸a” passada que pode ser uma fun¸˜o, por exemplo. c ca John Henrique Teixeira de Godoi Git
  25. 25. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoPente fino merge-base <ramifica¸˜o1><ramifica¸˜o2> ca ca encontro o registro em comum entre as ramifica¸˜es passadas por parˆmetro co a diff - -stat <ramifica¸˜o1><ramifica¸˜o2> ca ca encontra o registro em comum e mostra quais foram as mudan¸as. c blame <arquivo> exibe o respons´vel por cada linha de c´digo. a o John Henrique Teixeira de Godoi Git
  26. 26. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoColher de ch´ a DiffMerge, Kdiff3 ou Meld – ferramentas gr´ficas para solu¸˜o a ca de conflitos sudo apt-get install meld ; git config - -global merge.tool meld John Henrique Teixeira de Godoi Git
  27. 27. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparandoReferˆncias e gitref.org/ git-scm.org zrusin.blogspot.com/2007/09/git-cheat-sheet.html andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users pajeonline.blogspot.com/2010/12/versionando-seus-dados- boas-praticas-e.html John Henrique Teixeira de Godoi Git

×