View
213
Download
1
Category
Preview:
DESCRIPTION
Xenode Systems Blog_ [Tutorial] Git Desde Cero
Citation preview
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://usuario@bitbucket.org/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.
Recommended