Git e contibuição com projetos open source usando GitHub

  • View
    1.462

  • Download
    2

Embed Size (px)

Text of Git e contibuição com projetos open source usando GitHub

  • Bruno Orlandi

    Git e contribuio para projetos Open Source

    2 Edio

  • Bruno Orlandi 5AnoBCCICMCUSP

    P&DcaroTechnologies

    DesenvolvimentoWeb

    Gostadecompartilharconhecimento

    @BrOrlandi

  • Instalando

    InstalaroGit:

    sudoaptgetinstallgit

    Escolhasuainterfacegrfica:

    https://gitscm.com/downloads/guis

    Recomendado:GitEye

    http://www.collab.net/downloads/giteye

    https://git-scm.com/downloads/guishttp://www.collab.net/downloads/giteye

  • Sobre o Minicurso

    NoserabordadoapartetcnicadoGit.

    ObjetivoaprenderGitesuautilidadenaprtica!

    Dvidasecorreesaqualquermomento!

  • Contedo

    ControledeVerso ComandosBsicos Ramificaes PublicandoeColaborando Exerccios

  • O que Git-SCM

    SistemadeControledeVersoDistribudo SCM SourceControlManagement CriadoporLinusTorvalds(2005) AuxiliarnoDesenvolvimentodoLinux

  • Gerncia de Configurao de Software

  • Gerncia de Configurao de Software

    Duranteodesenvolvimentodosoftwarequeremossaber:

    Oquemudouequando? Porquemudou? Quemfezamudana? Podemosreproduzirestamudana?

  • Gerncia de Configurao de Software

    Identificao Documentao Controle Auditoria

  • Gerncia de Configurao de Software

    Artefatos:

    Cdigofonte DocumentaodoSoftware ManualdeUsurio

  • Problema exemplo

    VocprecisaeditarumcdigoqueestnoseuDropbox

    Vocfazodownloaddoarquivo Fazasalteraesnecessrias SalvaoarquivonoDropbox

  • Problema exemplo

    Seucolegatambmquereditarocdigo Vocsbaixamomesmoarquivojunto VoceditaesalvanoDropbox SeucolegaeditaesalvanoDropboxeacabasobrescrevendoseucdigo

  • Controle de Verso resolve

    Controledeversofazo'merge'entreasalteraes.

  • Git Distribudo

  • Controle de Verso

  • O que GitHub

    ServidorderepositriosGit Surgiuem2008 +10milhesderepositrios +10milhesdeusurios

  • Esto no GitHub

  • Usam Git

  • Alternativas

    Subversion(SVN) Mercurial CVSConcurrentVersioningSystem Bazaar

    Gitomaisrpidoeeficiente

  • Servidores

    Servidores/Suporte git Mercurial SVNGitHub VGitLab VBitbucket V VSourceForge V V VGoogle Code V V V

  • Vamos comear na prtica!

  • Instalando

    InstalaroGit:

    sudoaptgetinstallgit

    Escolhasuainterfacegrfica:

    https://gitscm.com/downloads/guis

    Recomendado:GitEye

    http://www.collab.net/downloads/giteye

    https://git-scm.com/downloads/guishttp://www.collab.net/downloads/giteye

  • Criar conta no Github

    Acessemhttps://github.com/ Criemsuaconta. Lembrese,atravsdessacontavocpodercontribuircommilhesdeprojetosopensource.

    https://github.com/

  • Ajuda

    Quandoprecisardeajuda:

    githelp

    Siteoficial:

    https://gitscm.com/

    https://git-scm.com/

  • Criando o Primeiro Repositrio

    gitinitPrimeiroRepo

    SercriadoodiretrioconfiguradocomoumrepositrioGit

    Todasasconfiguraesdorepositrioficamnapasta.git

  • Crie seu primeiro arquivo

    Crieumarquivo,editeeadicioneaorepositrio:

    geditPrimeiroArquivo

    gitaddPrimeiroArquivo

    gitcommitmCriadooprimeiroarquivo.

  • Configurando

    Configureseunomeeemail:

    gitconfigglobaluser.nameMeuUserName

    gitconfigglobaluser.emailmeuemail@email.com

    Configurecoresnoterminal:

    gitconfigglobalcolor.uiauto

  • Git Status e Log

    Comandoparaverostatusdorepositrio

    gitstatus

    Verltimoscommitsnorepositrio:

    gitlog

  • Criar um repositrio remoto

    CrieumrepositrionoGithub. Configureorepositrioremoto. CrieumarquivoREADME.md Faaouploaddasalteraes.

    gitremoteadd

  • Git Push

    Enviaralteraes(commits)deumabranchparaorepositrioremoto.

    Aprimeiravez:

    gitpushuoriginmaster

    Oenviorejeitadoseorepositriolocalnoestiversincronizado.

    gitpush

    gitpush

  • Git Add

    gitadd

    Adicionaosarquivosnovosemodificadosparaoprximocommit

    gitadd.

  • Git Commit

    gitcommit[mMessage]

    Registraocommitcomtodososarquivosqueusougitadd

    Seoparametrodemensagemnoforpassadoabrirumeditordetextoparaescreveramensagem

    gitconfigglobalcore.editorgedit

  • Git Workflow

    Basicamenteamaiorpartedotrabalhocomogitconsistenestastarefas:

    Editar Commitar Sincronizarcomorepositrioremoto

    Exerciteestescomandos!

  • Reviso dos comandos

    gitstatus

    gitlog

    gitadd

    gitcommit

    gitpush

  • Status dos arquivos

    Editeoarquivocriadoanteriormente Crieumnovoarquivoevejaoseustatusnorepositrio

  • Estados dos arquivos

    Nomonitorado(untracked) Modificado(modified) Preparado(staged) Consolidado(commited)

  • Estados dos arquivos

  • Dif

    gitdiff

    Exibirdiferenasentrecommitsebranchs

    gitdiff[path]

    Diferenanodiretrio

    gitdiffHEAD~1

    Mostraoquefoialteradonoltimocommit VerdiffnoGitHub

  • Ferramenta externa Dif

    gitconfigglobaldiff.tooldiffmerge

    PermiteusarumaferramentaexternaparausarnoDiffetambmnoMerge.

    gitdifftoolHEAD~1

  • Exerccio 1

    Removaumalinhadeumarquivo Adicioneumanovalinhanomesmoarquivo Adicioneumnovoarquivocompelomenosumalinha

    Faaocommiteopushdasalteraes VejaasdiferenasdocommitpeloGitHub

  • Git Clone

    gitclone

    Baixaorepositrioremoto. Outraformadecriarumrepositriolocal. Jvemcomoremoteconfigurado.

  • Git Pull

    gitpull

    Baixaasalteraesdorepositrioremoto. Mantmorepositriosincronizadocomosltimoscommitsdeumabranch.

  • Exerccio 2

    Configureumcolaboradorparaseurepositrio.

    Eledeveclonarseurepositrioefazerumcommitnele.

    Vocdeveatualizarseurepositriocomonovocommit.

    Invertamospapis.

  • Navegar no histrico

    gitcheckout

    Permitevercomoumarquivooutodoorepositrioestavaemumdeterminadocommit.

  • Git checkout

    gitcheckout

    Alteraorepositrioparaoestadodaquelecommit.

    tilparafazertestesantesedepoisdealteraes.

    gitcheckoutmaster

    Paravoltarorepositrionoltimocommit.

  • Desfazendo alteraes

    gitcheckout

    IrdesfazertodasasalteraesquenoestejamnoStagedesdeoltimocommit.

    gitcheckoutHEAD

    DesfazerasalteraesdesdeoltimocommitincluindooStage.

  • Git Revert

    gitrevert

    Ircriarumnovocommitquedesfazasalteraesdocommitespecificado.

    tilparadesfazerumcommitantigo.

  • Git reset

    gitreset

    Resetarorepositrioparaumdeterminadocommit.

    gitresethard

    Resetareremovertodasasalteraes.

    Cuidadoaousar!Nousarsejestiverpublicado.

    tilparadesfazerltimoscommits.

  • Conflitos

    Conflitospodemaconteceraounirmosalteraes.

    Acontecemquandoversesdiferentespossuemasmesmaslinhasnosmesmosarquivoseditadasdiferentes.

    OGitidentificaosconflitoseficaaguardandoasoluodeles.

    Aoresolverosconflitosdeveserfeitoumcommit.

  • ConflitosLinha 1Linha 2Linha 3

    Linha 1Linha 2Linha 3Nova linha

    Linha 1Linha 2Linha 3Quarta linha

    ?

  • Exerccio 3

    Crieumconflitonorepositriodoseupar. Seupardeveeditaromesmoarquivoquevoc.

    Vocdevefazeropull,resolveroconflitoefazeropushdassuasalteraes.

    Seupardeveverqueasuaalteraofoiadicionadajuntoalteraodele.

    Invertamospapis.

  • Branching

    Criandoramificaesdorepositrio

  • Branch

    umalistadecommits. Representaramificaesnorepositrio. Muitotilparatrabalhoscolaborativos. Branchsdedesenvolvimentofacilitamocontrole.

    Branchmasterapadro.

    gitbranch

  • Branching

    gitbranch

    Criaumanovabranch.

    gitbranchd

    Excluirumabranch.

  • Git Checkout Branch

    gitcheckout

    Mudaparaabranch. Seurepositriopassaateroscommitsqueabranchpossuienovoscommitsseroadicionadosela.

  • Exerccio 4

    Crieumanovabranchnoseurepositrio. Mudeparaestabranchefaapelomenos2commits.

    FaaouploadevejasuanovabranchnoGitHub.

    Faaumcommitnamasterquealtereasmesmaslinhas.

    VejacomoasbranchsdivergemnoGitHub.

  • Git Merge

    gitmerge

    Aplicaroscommitsdeumabranchnabranchatual.

    Encontraumcommitcomum(base)entreasbranchseaplicatodososcommitsqueabranchatualnopossui.

    Casoexistamcommitsnabranchatualquenoestonaoutra,sercriadoumcommitdemerge.

  • Exerccio 5

    Fazeromergedanovabranchnamaster. ResolveroconflitoevisualizarnoGitHubogrficodasbranchs.

  • Git Rebase

    gitrebase

    SemelhanteaoMergepormdiferentenaordemdeaplicaroscommits.

    NoRebase,osseuscommitsnafrentedabasesoremovidostemporariamente,oscommitsdeoutrabranchsoaplicadosnasuabrancheporfimseuscommitssoaplicadosumaum.

    Podeacontecerconflitosqueseroresolvidosparacadacommit.

  • Exerccio 6

    Faaumcommitnamastereoutroemoutrabranch.

    Faaorebasedabranchcomamaster. Vejaaordemdoscommits. Mesmoquetenhaconflitosohistricodecommitspreservado.

  • Git Fetch

    gitfetch

    Baixaasatualizaesdoremotepormnoaplicaelasnorepositrio.

    Permitefazerorebasedeumabranchemvezdefazeromerge.

    Pull=Fetch+Merge FetcheRebasemelhorparamanterhistricododesenvolvimento.

  • Exerccio 7

    Comabranchmastersincronizadasvoceseupardevemfazercommitsnamaster.

    Seupardevefazeropushdoscommitsdele. Antesdevocfazeropushdosseuscommitsvocdevefazerorebasecomoscommitsdoseupar.

  • Tag

    tilparadefinirversesestveisdoprojeto. SemelhanteaBranchpormnorecebemaiscommits.

    Guardaumestadodorepositrio.

    gittag[nomedatag]

    gitpu