Transcript
  • PublicadoporManuelEscudero[Tutorial] Git desde Cero

    Cuandoseesprogramador,unadelasherramientasqueseconviertenennuestrasmejoresamigasesGit.SetratadeunsistemadecontroldeversionescreadopornadamsynadamenosqueLinusTorvalds,elcreadordelKernelLinuxyeslamejormaneradeevitarcatstrofesennuestrocdigoademsdeserunexcelentegestordeltrabajocuandosetrabajaenequipo.

    Gitprincipalmenteseusaparacdigo,inclusohaylugaresenlaweb(ComoBitBucketyGitHub)quesededicanacrearnosunfrontendparalagestindenuestrocdigocontroladoporGitSinembargo,noveoraznalgunaporlacualGitnopuedaserusadoporotraspersonasparaotrosmbitos(diseo,arquitectura,quseyo)enproyectosquerequierantrabajarconmsdeunaversindeunarchivoyvariasmodificaciones.Dichoesto,aprendamosGitpues:

    NOTA:ParastetutorialusarunsistemaLinux(Ubuntu)comoreferencia,pero(exceptuandolasinstruccionesdeinstalacin)lasmismasinstruccionesdeusodeGitaplicanparacualquierotradistroLinux,ademsdeparaMacOSobien,gentequeuseCygWinenWindowsporejemplo.

    1)InstalandoGit

    ParainstalarGitenUbuntuLinuxporejemplo,haramoslosiguienteenTerminal:

    sudoaptgetinstallgitgitcore

    2)Primeravez?ConfiguratusOpciones

    Ahoratendremosquecorrerstoscomandos(Globalesentresistemas)paraconfigurarnuestrasopcionesdeGit:

    1.gitconfigglobaluser.name"TuNombre"2.gitconfigglobaluser.emailtuemail@servicio.com3.gitconfigglobalpush.defaultsimple

    Comopodrnnotar,elnombrevaentrecomillas,elemailno.

    3)Editorpredeterminado

    CuandonecesitemosaadirunmensajeanuestrosCommitsynolohagamosdirectamentedesdeconsolaporejemplo,necesitamosqueuneditoraparezcaynosrecuerde/permitahacerlo,paraconfigurarstaopcinhacemos:

    gitconfigglobalcore.editor"editor"

    Algunasopcionesausarenlugarde"editor"sonporejemplo:sublw(ParaSublimeTextentodas

    SeleccionaridiomaConlatecnologade Traductor

    Seguira@xenodesystems

    Seguir 2.081

    GUI VirtualizationSDK

    Instantly take your .NET VBDelphi. Windows App to the

    Web.

    BscanosenFacebook

    XenodeSystemsMxico

    A1412personaslesgustaXenodeSystemsMxico.

    PluginsocialdeFacebook

    Megusta

  • lasplataformas)matew(ParaTextMateenMac)gvimf(ParaGVimenLinux)obien,mvimf(ParaMacVimenMac)Yopersonalmenteusonanoparaeleditornano(deconsola)enLinux.Recuerdaquedebesseleccionarunaopcinsegntusistemaoperativoyasegurartedequeeleditorestinstalado...ParaLinuxporejemplousaremosGVimyloinstalaremosdelasiguientemaneraantesdeestablecerlaopcin(enUbuntu):

    sudoaptgetinstallvimvimgtkvimgnome

    4)NuestroprimerRepo!

    Ahoras,eshoradeempezaratrabajarconGitparaconocersusbeneficios:Creaunanuevacarpetaenalgnlugaryaadeunos2o3archivosdetexto(oHTMLodecualquiertipodescriptocdigoquequieras)ademsdeunaimagen.jpgo.pngporejemplo,unacarpetavaca(conelnombre"empty")yunarchivovacoconextensin".dumm"(ydenombre"archivo")jaja.Entuterminalhazcdhacialarutadelacarpetadondepusistetodo,luegoinicializaunrepositorioGit...stosdospasossehacenas:

    cdruta/a/carpetagitinit

    5)GitIgnore

    Pordefecto,Gitsiempretomatodoelcontenidodelacarpetadelproyectodondeseinicializelrepoyloutilizacuandotrabajamosconelrepositorio...Elproblemaconstoesquehayciertosarchivosqueciertamentenoqueremosennuestrorepositoriooesms,noqueremosqueselestomeencuentaporquesonconstantementecambiados.stossonaquelloscomoporejemplolos"Logs"otambin,elfamoso"Thumbs.db"enWindowsporsolomencionaralgunos.Paraevitarquestosarchivossenosinterpongan,tenemosquecrearunarchivollamado.gitignore(obviamenteoculto)enlarazdelacarpetadelproyectoydebedetenerelsiguienteformatosegnnuestrasnecesidades:

    #Ignorandogruposdearchivosindividualesporextensin

    rutas/de/locacin/*.extensin

    #IgnorandounaCarpeta

    ruta/a/carpeta/ignorada

    #IgnorandounArchivoIndividual

    ruta/a/archivo.ext

    Sistodearribanotuvomuchosentidoparati,veamosunejemplo:Pordecir,supongamosquequieroevitarqueGitcarguelasimgenesquepuseenmicarpetadeejemploquehicearriba,elarchivo".dumm"quemeinventylacarpetavaca.Miarchivo.gitignorequedaraalgoas:

    #IgnorandoJPG'syPNG's

    /*.jpg/*.jpeg/*.png

    #IgnorandolaCarpetaVaca

    /empty

    #IgnorandounArchivoIndividual

    /archivo.dumm

    SiestsacostumbradoatrabajarconrutasdecarpetasenLinuxoMacOSporejemplo,entoncesstearchivonoteparecerraro:eslomismo.LanicadiferenciaesquetomacomoRazalacarpetadelproyectoydeahunoseleccionalosarchivosquequiereignorar.Enelcasodequererignorarenbasealasextensionesusamoselcomodn(*)paraqueignoretodoslosarchivosqueseandesaextensin.Sitedascuenta,enningnmomentopasamosparmetros(ComoR)puestoqueGitestmuybienconfiguradoyharsutrabajoalaperfeccindemanerarecursiva,stoquieredecirqueaplicarlasreglasadecuadasendirectoriosysubdirectorios(ademsdeentodossusarchivos)cuandoseameritesegnnuestrasinstruccionesdelarchivo.gitignore.

    6)Aadiendoarchivos

    RSS

    ElcontenidodeesteblogestbajounaLicenciaCreativeCommonsAtribucinNoComercialCompartirIgual3.0Unported.

    Licencia del Contenido

  • Losiguientequesehaceesaadirlosarchivosanuestrorbolgit.Dentrodelaterminal(estandoenlarutadelarazdenuestroproyecto)hacemoslosiguiente:

    gitadd.

    soessimplementeparahacerquetodoslosarchivos(nuevosymodificados)seanaadidosaunaespeciede"listadeespera"deGit.Elmismocomandolotenemosquecorreralborrary/oaadirarchivos/carpetasparaquegittomeencuentalasmodificacionesenelproyecto.

    7)Haciendovlidosloscambios

    Ahoratenemosquerealizaruncommit,parahacervlidosloscambiosennuestroproyecto.stosehacecon:

    gitcommitm"Mensaje"

    Loquevadespusdemeselmensajequedescribeastecommit,siemprehagansuscommitsconunmensajedepreferencia.Sinoquierenaadirmensaje,omitanelm.gitcommithacevlidosloscambiosdemaneraLocalennuestrorboldelproyecto.

    NOTAS:CabedestacarquepuedesusarloscomandosgitstatusygitlogparamonitorizartuproyectoconGitdecuandoencuando.Porotrolado,sihacescambiosmenoresentuproyecto(comorenombrararchivos,editarlosetc)Puedesusarelsiguientecomandoparaaadiryhacerelcommit:

    gitcommitam"Mensaje"

    Perorecuerdaquesihacescambiosimportantes(Comoaadirnuevosarchivosoeliminarotrosporejemplo)debesdeusarelcomandodeadd.yluegoeldecommitcomoloharasregularmente.

    8)GitysuUtilidad

    Supongamosqueporalgunarazneliminastedemaneraforzadaeirrecuperable(rmrfjajajaja)algnarchivoocarpetadetuproyectodesdetultimocommit.Bueno,puessiemprepuedesvolveralltimosnapshotdetucdigo(esdecir,alcdigocomoestabaalmomentoderealizarelltimocommitregistrado)conelcomando:

    gitcheckoutf

    Elparmetrofhacequegitforceasobreescribirloscambioshechosporaccidenteenelproyectoyserestaurenlosarchivosycarpetasdenuestroltimocommit.

    9)AlaNube!

    TodostoquehemosestadoviendoesenelmbitoLocal.Pero,Qupasasiestoycolaborandoconvariosprogramadoresenunmismoproyecto?QutalsiquierotenerunbackupdemicdigoenalgunapartequenoseamiPC?Qutalsiquieroquemsymsgentemeconozcaytengaaccesoaloquehago?AquesdondeentranenjuegolosserviciosdealmacenamientoderepositoriosGitcomopodranserGitHubyBitBucketobien,Gitorious.Personalmente,prefieroBitBucketdebidoaqueofreceprcticamentelasmismasfuncionesqueGitHubysimilaresademsdealgunasventajasqueseagradecen,comoelhechodepodertenertodoslosrepositoriospblicosyprivadosquequierascompletamentegratis.Esporstoqueenstetutorialusaremosseservicio,peroestsenlibertaddeirteconelquemsteconvenza.

    LoprimeroqueharemossersacarunacuentadeBitBucketenbitbucket.org,configuraremosnuestraspreferenciasyvalidaremoslacuenta.Msadelante,crearemosunnuevorepositorioPRIVADOquefuncioneconGitcomocontroldeversiones:

  • Leponemosunnombre,seleccionamosunlenguaje(laseleccindelenguajeahoritaesindiferente,perotratadeseleccionarlosegneltipodelenguajemsutilizadoentuproyecto)ydemomentonomarcamosniWikiniIssueTracking,puesnolosvamosausar.Aadimosunadescripcinynuestrawebsiasloqueremostambin.

    10)GitPush

    Unavezteniendounlugarenlawebquenossirvadealojamientoparanuestrorepo,tenemosquepasarnuestroscambiosalaweb,ascomohacemoscommitslocales.Justodespusdehaceruncommitlocal,siunoquierequesoscambiospasenalanube(usandobitbucket)hace:

    gitremoteaddoriginhttps://[email protected]/usuario/repo.gitgitpushuoriginmaster

    Reemplazando"usuario"portunombredeusuarioenbitbuckety"repo"porelnombredelrepohaciadondequieresenviartucdigo.

    YesoharqueGitsepaquetienequesubirlaramaprincipaldelproyecto(esdecirtodoelproyectopues)aBitBucket.Parafinesprcticos(notenerqueintroducircredenciales)unousaintegracinconSSHperoesoestparaexplicarseenotraocasin.Tambindeborecalcarqueelcomando1setiendeausarunasolavezcadaqueaadimosunnuevoorigenremoto(porcadarepoinicializado)segnlasinstruccionesquesenoshayandadoenelmismo,yel2pasaasersimplementegitpushenlamayoradesistemastrashaberlousadocomoaqusemuestralaprimeravezencadarepoinicializado.

    11)Branching

    ImaginemosanuestroproyectoenGitcomounrboldondelarazeselproyectoprincipalydeahcrecenvariasramas.ElbranchingenGitesjustoloqueteimaginars:Setratadecrearramificacionesdelproyectoenbaseacopiasdelcdigodelproyectooriginalenlascualespodemosrealizarmodificacionessinpreocuparnosporcomprometerelproyectoens.stoquieredecirquesiyotengounproyectoenelcualsemeocurreaadirunanuevacaractersticaquequiznosealosuficientementeconfiableanivelestabilidadpuedohacerloenunaramademiproyectoydejareloriginalintacto.Paracrearramas,usamoselsiguientecomando:

    gitcheckoutbNombredeRama

    Donde"NombredeRama"eselnombrequelepondremosanuestraramaquesecrearentonces.Podemosusarelcomandogitbranchparasaberenquramaestamostrabajandoactualmenteenelproyecto.Siqueremossaltarderamaenrama,usamoselcomando:

    gitcheckoutrama

    Dondereemplazaremos"rama"(obviamente)porelnombredelaramaalaquequeramossaltar.

    12)Merging

  • Entradamsreciente EntradaantiguaPginaPrincipal

    Etiquetas:BitBucket,git,GitHub,Linux,Mac,Programacin,repositorios,tutorial,Windows

    Reacciones: #Awesome (2) #Cool (1) #Thanks (1) #Yawn (0)

    Supongamosquecreasteunaramanuevadondehicistealgunasmodificacionesqueresultaronserunabuenaideayquieresqueelproyectooriginal(ramamaster)lasintegre.Parastosirveelmerging...Siqueremoscombinar2ramas,nosmoveremosalaramadondequeramosintegrarelcdigonuevo(enelejemplolamaster)yharemoselmergecon:

    gitmergeRamaaMezclar

    Donde"RamaaMezclar"eselnombredelaramaquemezclaremosconlaramaalaquenosmovimos.Sivamosamezclar"ramapatito"con"master"porejemploentoncesharamos:

    gitcheckoutmastergitmergeramapatito

    Yesoaadiraloscambiosrealizadosen"ramapatito"alaramaprincipaldelproyecto.

    13)BorrandoRamas

    Cuandoqueramosborrarunaramaqueyahayasidomezclada,loharemoscon:

    gitbranchdRama

    Donde"Rama"esobviamenteelnombredelarama...

    YsiqueremosborrarunaramaquenohasidomezcladatendramosqueusarDenlugardedcomoenelejemplodearriba.Ojoquestonoeliminalosarchivosmezclados,sinosimplementelaramacomocontenedor,paraeliminarlosarchivosmezclados(sialfinalnotegust)harasunrollbackcomomostramosenelpaso8.

    BsicamenteesassonlasopcionesfundamentalesdeGityparaqunossirvecadauna.EsperoquestetutorialhayasidodesuagradoyqueapartirdeahoravalorenlaposibilidaddeusarGitparasusproyectos...Quierasqueno,tepermitetenerunambientedetrabajomsordenadoytranquilo.

    XenodeSystems2013.PlantillaSimple.TecnologadeBlogger.


Top Related