ebook img

Controlando versões com Git e Github PDF

209 Pages·2014·1.91 MB·Portuguese
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Controlando versões com Git e Github

© CasadoCódigo Todos os direitos reservados e protegidos pela Lei nº9.610, de 10/02/1998. Nenhumapartedestelivropoderáserreproduzida,nemtransmitida,sem autorização prévia por escrito da editora, sejam quais forem os meios: fotográficos,eletrônicos,mecânicos,gravaçãoouquaisqueroutros. CasadoCódigo Livrosparaoprogramador RuaVergueiro,3185-8ºandar 04101-300–VilaMariana–SãoPaulo–SP–Brasil CasadoCódigo Sumário Sumário 1 Introdução 1 1.1 Mantendoohistóricodocódigo . . . . . . . . . . . . . . . . . 1 1.2 Trabalhandoemequipe . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Sistemasdecontroledeversão . . . . . . . . . . . . . . . . . . 2 1.4 ControledeversãorápidoeconfiávelcomGit . . . . . . . . . 3 1.5 HospedandocódigonoGitHub . . . . . . . . . . . . . . . . . 3 1.6 Oprocessodeescritadesselivro . . . . . . . . . . . . . . . . . 4 2 Tourprático 5 2.1 InstalandoeconfigurandooGit . . . . . . . . . . . . . . . . . 5 2.2 Criandoumarquivotextoparaversionarmos . . . . . . . . . 7 2.3 VersionandoseucódigocomGit . . . . . . . . . . . . . . . . 8 2.4 CompartilhandoseucódigoatravésdoGitHub . . . . . . . . 12 3 Trabalhandocomrepositóriolocal 19 3.1 Criandoumrepositóriolocal. . . . . . . . . . . . . . . . . . . 20 3.2 Rastreandoarquivos . . . . . . . . . . . . . . . . . . . . . . . . 22 3.3 Gravandoarquivosnorepositório . . . . . . . . . . . . . . . . 29 3.4 Verificandoohistóricodoseurepositório . . . . . . . . . . . 36 3.5 Verificandomudançasnosarquivosrastreados . . . . . . . . 39 3.6 Removendoarquivosdorepositório. . . . . . . . . . . . . . . 47 3.7 Renomeandoemovendoarquivos. . . . . . . . . . . . . . . . 49 3.8 Desfazendomudanças . . . . . . . . . . . . . . . . . . . . . . 52 i Sumário CasadoCódigo 4 Trabalhandocomrepositórioremoto 61 4.1 Repositórioremoto . . . . . . . . . . . . . . . . . . . . . . . . 62 4.2 Adicionandoorepositórioremoto . . . . . . . . . . . . . . . 63 4.3 Enviandocommitsparaorepositórioremoto . . . . . . . . . 65 4.4 Clonandoorepositórioremoto . . . . . . . . . . . . . . . . . 66 4.5 Sincronizandoorepositóriolocal . . . . . . . . . . . . . . . . 67 4.6 ProtocolossuportadospeloGit . . . . . . . . . . . . . . . . . 68 5 HospedandoorepositórionoGitHub 71 5.1 Serviçosdehospedagemdeprojetos . . . . . . . . . . . . . . 72 5.2 GitHub:aredesocialdosdesenvolvedores . . . . . . . . . . . 72 5.3 Encontrandoprojetosevisualizandoocódigo-fonte . . . . . 74 5.4 CriandoumusuárionoGitHub . . . . . . . . . . . . . . . . . 80 5.5 Criandoorepositóriodoprojeto . . . . . . . . . . . . . . . . 83 5.6 EnviandooscommitsdoprojetoparaoGitHub. . . . . . . . 85 5.7 ClonandoorepositóriohospedadonoGitHub . . . . . . . . 86 5.8 Colaborandocomprojetosopensource . . . . . . . . . . . . 87 6 Organizandootrabalhocombranches 93 6.1 Abranchmaster . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.2 Criandoumabranch . . . . . . . . . . . . . . . . . . . . . . . 96 6.3 Trocandodebranch . . . . . . . . . . . . . . . . . . . . . . . . 98 6.4 Deletandoumabranch . . . . . . . . . . . . . . . . . . . . . . 100 6.5 Comitandocódigoemumanovabranch . . . . . . . . . . . . 101 6.6 Voltandoparaomasterefazendoumaalteração . . . . . . . 103 6.7 Mesclandoalterações . . . . . . . . . . . . . . . . . . . . . . . 105 7 Trabalhandoemequipecombranchesremotas 113 7.1 Branchesremotas . . . . . . . . . . . . . . . . . . . . . . . . . 114 7.2 Compartilhandobranches . . . . . . . . . . . . . . . . . . . . 116 7.3 Obtendonovasbranchesremotasemoutrosrepositórios . . 118 7.4 Enviandocommitsparaorepositóriocentral . . . . . . . . . 121 7.5 Obtendocommitsdeumabranchremota . . . . . . . . . . . 123 7.6 Mesclandobranchesremotaselocais . . . . . . . . . . . . . . 127 7.7 Deletandobranchesremotas . . . . . . . . . . . . . . . . . . . 133 ii CasadoCódigo Sumário 8 Controlandoversõesdocódigocomtags 137 8.1 Criando,listandoedeletandotags . . . . . . . . . . . . . . . . 138 8.2 Maisinformaçõescomtagsanotadas . . . . . . . . . . . . . . 139 8.3 Compartilhandotagscomasuaequipe . . . . . . . . . . . . . 140 9 Lidandocomconflitos 143 9.1 Mesclandomudançasemummesmoarquivosemconflitos . 144 9.2 Conflitosapósummergecommudançasemummesmoar- quivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 9.3 Resolvendoconflitosapósumrebase . . . . . . . . . . . . . . 150 9.4 Usandoumaferramentapararesolverconflitos . . . . . . . . 152 10 ManeirasdetrabalharcomGit 157 10.1 Utilizandosóabranchmastercomumrepositóriocentral . 159 10.2 Utilizandobranchesporfuncionalidadecomumrepositório central . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 10.3 Utilizandobranchesporetapadedesenvolvimentocomum repositóriocentral . . . . . . . . . . . . . . . . . . . . . . . . . 167 10.4 ColaborandocomprojetosopensourcecomForkePullRequest 173 10.5 OrganizandoprojetosopensourcegigantescoscomDitador eTenentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 11 Apêndice GitHubnoWindows 179 11.1 InstalandooGitHubforWindows. . . . . . . . . . . . . . . . 180 11.2 Criandoumnovorepositório . . . . . . . . . . . . . . . . . . 186 11.3 Efetuandocommitsnorepositório . . . . . . . . . . . . . . . 188 11.4 Detalhandooscommits . . . . . . . . . . . . . . . . . . . . . . 190 11.5 EnviandoorepositórioparaoGitHub . . . . . . . . . . . . . 193 11.6 Trabalhandocombranches . . . . . . . . . . . . . . . . . . . . 195 iii Capítulo1 Introdução 1.1 Mantendo o histórico do código Vidadeprogramadornãoéfácil.Hásempreumapressãoporentregasrápidas denovasfuncionalidades.Mas,apesardapressa,énecessárioprestaratenção no que estamos fazendo, mesmo se a alteração for pequena. Ao mexermos emumcódigoexistenteéimportantetomarmoscuidadoparanãoquebraro quejáfunciona. Por isso, queremos mexer o mínimo possível no código. Temos medo deremovercódigoobsoleto,nãoutilizadoouatémesmocomentado,mesmo quemantê-lojánemfaçasentido.Nãoéincomumnomercadovermoscódigo funcionalacompanhadodecentenasdelinhasdecódigocomentado. Sem dúvida, é interessante manter o histórico do código dos projetos, para entendermos como chegamos até ali. Mas manter esse histórico junto ao código atual, com o decorrer do tempo, deixa nossos projetos confusos, 1.2. Trabalhandoemequipe CasadoCódigo poluídoscomtrechosecomentáriosquepoderiamserexcluídossemafetaro funcionamentodosistema. Seriabomsehouvesseumamaneiradenavegarmospelocódigodopas- sado,comoumamáquinadotempo paracódigo... 1.2 Trabalhando em equipe Mas,mesmoquetivéssemosessamáquinadotempo,temosoutroproblema: muitoraramentetrabalhamossozinhos. Construirumsistemaemequipeéumgrandedesafio.Nossocódigotem queseintegrardemaneiratransparenteesememendascomocódigodetodos osoutrosmembrosdanossaequipe. Comopodemosdetectarqueestamosalterandoomesmocódigoqueum colega? Comomesclarasalteraçõesquefizemoscomademaisalteraçõesda equipe? E como identificar conflitos entre essas alterações? Fazer isso ma- nualmente,comcadernetasouplanilhasemuitaconversa,parecetrabalhoso demaisebastantesuscetívelaerroseesquecimentos. Seria bom que tivéssemos umrobô de integração de código, que fizesse todoessetrabalhoautomaticamente... 1.3 Sistemas de controle de versão Existemferramentasquefuncionamcomomáquinasdotempoerobôsdeinte- graçãoparaoseucódigo.Elasnospermitemacompanharasalteraçõesdesde asversõesmaisantigas.Tambémépossíveldetectaremesclaralteraçõesnos mesmosarquivos,alémdeidentificarconflitos,tudodemaneiraautomática. Essasferramentassãochamadasdesistemasdecontroledeversão. Nessetipodeferramenta,háumrepositórioquenospermiteobterqual- querversãojáexistentedocódigo.Semprequequisermoscontrolarasversões dealgumarquivo,temosqueinformarquequeremosrastreá-lonorepositó- rio. A cada mudança que desejamos efetivar, devemos armazenar as altera- çõesnesserepositório. Alterações nos mesmos arquivos são mescladas de maneira automática sempre que possível. Já possíveis conflitos são identificados a cada vez que obtemosasmudançasdosnossoscolegasdetime. 2 CasadoCódigo Capítulo1. Introdução Desdeadécadade1990,existeessetipodeferramenta.Algunsexemplos desistemasdecontroledeversãomaisantigossãoCVS,ClearCase,Source- SafeeSVN(queaindaébastanteusadonasempresas). Emmeadosdadécadade2000,surgiramsistemasdecontroledeversão maismodernos,maisrápidoseconfiáveis,comoMercurial,Bazaare,éclaro, Git. 1.4 Controle de versão rápido e confiável com Git O Git é um sistema de controle de versão que, pela sua estrutura interna, é umamáquinadotempoextremamenterápidaeéumrobôdeintegraçãobem competente. Foicriadoem2005porLinusTorvalds,omesmocriadordoLinux,que estavadescontentecomoBitKeeper,osistemadecontroledeversãoutilizado nodesenvolvimentodokerneldoLinux. Hojeemdia,alémdokerneldoLinux,aferramentaéutilizadaemdiver- sosoutrosprojetosdecódigoaberto. OGittambémébastanteutilizadoem empresasemtodoomundo,inclusivenoBrasil. Atualmente,conhecerbemcomoutilizaroGitéumahabilidadeimpor- tanteparaumacarreirabem-sucedidanodesenvolvimentodesoftware. 1.5 Hospedando código no GitHub Em2008,foicriadooGitHub,umaaplicaçãoWebquepossibilitaahospeda- gem de repositórios Git, além de servir como uma rede social para progra- madores. Diversos projetos de código aberto importantes são hospedados no GitHubcomojQuery,Node.js,RubyOnRails,Jenkins,Spring,JUnitemuitos outros. 3 1.6. Oprocessodeescritadesselivro CasadoCódigo 1.6 O processo de escrita desse livro AutilizaçãodoGitnãoérestritaapenasaodesenvolvimentodesoftware,mui- tosadministradoresderede,porexemplo,utilizamoGitparamanterohis- tóricodeevoluçãodearquivosdeconfiguraçõesemservidores. Acreditem,atémesmoaescritadesselivrofoifeitautilizandooGit! Não apenas esse, mas todos os livros da editora Casa do Código utili- zamoGitcomoferramentadecontroledeversão,paramanterohistóricode evoluçãodoscapítulos. OGitHubtambéméutilizadoparahospedagemdos repositóriosdoslivros. 4

Description:
Desenvolver software não é fácil. Há sempre demandas de novas funcionalidades a serem desenvolvidas e de alterações nas funcionalidades já existentes. Por isso, uma das preocupações nos projetos é manter um histórico de evolução do código fonte, facilitando o trabalho de desfazer algum
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.