xenode systems blog_ [tutorial] git desde cero

5
Publicado por Manuel Escudero [Tutorial] Git desde Cero Cuando se es programador, una de las herramientas que se convierten en nuestras mejores amigas es Git. Se trata de un sistema de control de versiones creado por nada más y nada menos que Linus Torvalds, el creador del Kernel Linux y es la mejor manera de evitar catástrofes en nuestro código además de ser un excelente gestor del trabajo cuando se trabaja en equipo. Git principalmente se usa para código, incluso hay lugares en la web (Como BitBucket y GitHub) que se dedican a crearnos un frontend para la gestión de nuestro código controlado por Git; Sin embargo, no veo razón alguna por la cual Git no pueda ser usado por otras personas para otros ámbitos (diseño, arquitectura, qué se yo) en proyectos que requieran trabajar con más de una versión de un archivo y varias modificaciones. Dicho esto, aprendamos Git pues: NOTA: Para éste tutorial usaré un sistema Linux (Ubuntu) como referencia, pero (exceptuando las instrucciones de instalación) las mismas instrucciones de uso de Git aplican para cualquier otra distro Linux, además de para MacOS o bien, gente que use CygWin en Windows por ejemplo. 1) Instalando Git Para instalar Git en Ubuntu Linux por ejemplo, haríamos lo siguiente en Terminal: sudo apt‐get install git git‐core 2) ¿Primera vez? Configura tus Opciones Ahora tendremos que correr éstos comandos (Globales entre sistemas) para configurar nuestras opciones de Git: 1. git config ‐‐global user.name "Tu Nombre" 2. git config ‐‐global user.email tu‐[email protected] 3. git config ‐‐global push.default simple Como podrán notar, el nombre va entre comillas, el email no. 3) Editor predeterminado Cuando necesitemos añadir un mensaje a nuestros Commits y no lo hagamos directamente desde consola por ejemplo, necesitamos que un editor aparezca y nos recuerde/permita hacerlo, para configurar ésta opción hacemos: git config ‐‐global core.editor "editor" Algunas opciones a usar en lugar de "editor" son por ejemplo: subl w (Para SublimeText en todas Seleccionar idioma Con la tecnología de Traductor Seguir a @xenodesystems Seguir 2.081 GUI Virtualization SDK Instantly take your .NET VB Delphi. Windows App to the Web. Búscanos en Facebook Xenode Systems México A 1412 personas les gusta Xenode Systems México. Plugin social de Facebook Me gusta

Upload: yrvin-escorihuela

Post on 17-Sep-2015

216 views

Category:

Documents


1 download

DESCRIPTION

Xenode Systems Blog_ [Tutorial] Git Desde Cero

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.