{"id":7445,"date":"2014-11-28T23:08:00","date_gmt":"2014-11-28T22:08:00","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=7445"},"modified":"2014-11-28T23:18:26","modified_gmt":"2014-11-28T22:18:26","slug":"git-trabajando-con-control-de-versiones","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/git-trabajando-con-control-de-versiones\/","title":{"rendered":"GIT. Trabajando con control de versiones."},"content":{"rendered":"<p style=\"text-align: justify;\">Actualmente existe una gran demanda en el mercado laboral de conocimiento de aplicaciones que permiten<strong> trabajar en equipo y controlar las versiones de los proyectos de desarrollo de software.<\/strong> Lo que se conocen como repositorios y controladores de versiones.<\/p>\n<p style=\"text-align: justify;\">I<strong>ndependientemente del sistema operativo que empleemos<\/strong>, el uso de este sistema es elemental. Puesto que nos permite realizar proyectos en trabajo colaborativo. <strong>No solamente es necesario conocer un determinado lenguaje para ejercer el trabajo, es preciso tambi\u00e9n saber la l\u00f3gica de funcionamiento que emplean estos gestores de versiones<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Git es un sistema de <strong>C\u00f3digo Abierto<\/strong> u Open Source y \u00a0adem\u00e1s <strong>distribuido<\/strong>, que permite administrar el c\u00f3digo fuente de <strong>proyectos grandes y peque\u00f1os<\/strong>. Existen tantos repositorios como usuarios. Cada desarrollador podr\u00e1 disponer del repositorio en local, en la propia m\u00e1quina de trabajo.<\/p>\n<p style=\"text-align: justify;\">Un control de versiones (<strong>SCV<\/strong>) o administrador de c\u00f3digo fuente es un sistema que <strong>almacena los cambios realizados sobre un archivo o un conjunto de archivos a lo largo del tiempo<\/strong>. Podremos <strong>recuperar<\/strong> versiones. Nos posibilita <strong>retroceder<\/strong> en el tiempo para<strong> corregir, modificar o eliminar, editar cambios en el proyecto<\/strong>.<\/p>\n<p style=\"text-align: justify;\">Existen muchas alternativas a GIT, como pueden ser <strong>Mercurial, SVN, Darcs, CVS, etc.<\/strong><\/p>\n<p style=\"text-align: justify;\">GIT fue creado por<strong> linus Torvarls<\/strong>, el creador del kernel de GNU\\Linux. GIT es r\u00e1pido, ofrece un dise\u00f1o sencillo, perfectamente v\u00e1lido para proyectos grandes (ejemplo el n\u00facleo de Linux). El <strong>sistema de ramas<\/strong> o branches es excepcional.<\/p>\n<p style=\"text-align: justify;\">Un SCV nos debe permitir restaurar los hist\u00f3ricos de forma sencilla, cada uno de ellos queda identificado con una cadena numerada o ID (HASH).<\/p>\n<p style=\"text-align: justify;\">GIT ofrece<strong> grandes ventajas para la empresa<\/strong>. Cuando trabajamos en un proyecto empresarial a diario, sin un SCV, los guardados realizados ocupaban m\u00e1s espacio, y duplicaban informaci\u00f3n, no existe control de archivos, los cambios e informaci\u00f3n que ha ido agreg\u00e1ndose simplemente no se registra.<\/p>\n<p style=\"text-align: justify;\">Actualmente este mecanismo ya no es eficaz, puesto que no permite un trabajo colaborativo y los problemas que ello deriva.<\/p>\n<p style=\"text-align: justify;\"><strong>Incluso los freelances pueden trabajar con GIT para colaborar con el resto y avanzar r\u00e1pidamente en el proyecto bajo un mismo directorio.<\/strong><\/p>\n<p style=\"text-align: justify;\">Gracias a este SCV podremos evitar c<strong>onflictos entre archivos de usuarios, controlar las versiones, recuperar datos, crear diversas ramas, y recopilar informaci\u00f3n de los cambios y trabajo que se va realizando<\/strong>.<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align: justify;\">Por lo tanto \u00a0es un software nos permite trabajar en proyectos en equipo, <strong>ganar tiempo<\/strong>, aumentar la <strong>rentabilidad<\/strong> del proyecto.<\/p>\n<p style=\"text-align: justify;\">Para poder trabajar con GIT existen herramientas cliente software pero algunos prefieren trabajar en modo consola o mediante comandos.<\/p>\n<p style=\"text-align: justify;\">No debemos <strong>confundir servicios en la nube para trabajar en equipo con un sistema de control de versiones<\/strong>. Ejemplo, si trabajamos en dropbox podremos trabajar en equipo, pero no tiene nada que ver con un sistema distribuido de control de versiones. Nada en absoluto. El \u00faltimo que guarde los datos en el dropbox pisara los datos de otro. Un caos. No existe un sistema de control de cambios, una l\u00f3gica de control de modificaciones, ni un historio de los mismos cambios.<\/p>\n<p>Para descargar GIT e instalarlo se puede visitar accediendo a la web (independiente de la plataforma)<\/p>\n<p><a href=\"http:\/\/www.git-scm.com\" target=\"_blank\">www.git-scm.com<\/a><\/p>\n<p>Para Windows existe un proyecto <a href=\"http:\/\/msysgit.guithub.io\" target=\"_blank\">msysgit.guithub.io<\/a><\/p>\n<p>Para comprobar que est\u00e1 instalado podemos abrir una terminal y ejecutar<\/p>\n<p><strong>git \u2013version<\/strong><\/p>\n<p>Para Mac podr\u00edamos visitar la web de<\/p>\n<p><a href=\"http:\/\/brew.sh\" target=\"_blank\">http:\/\/brew.sh<\/a><\/p>\n<p>Esta web <strong>Homebrew<\/strong> se encarga de instalar todo aquello que Apple no instala de serie. Homebrew instala cada paquete en su propio directorio, creando enlaces simb\u00f3licos a sus archivos dentro de usr\/local<\/p>\n<p><strong>Estados de trabajo en GIT<\/strong><\/p>\n<p>Existen <strong>3 estados<\/strong>, y es necesario tenerles muy presentes porque es vital. Nuestros archivos se van a ir moviendo entre estos estados.<\/p>\n<p><span style=\"color: #800000;\"><strong>El working directory o \u00e1rea de trabajo<\/strong><\/span>, donde los ficheros se encuentran en estado de modificado. Editamos el archivo.<\/p>\n<p><strong><span style=\"color: #800000;\">Staging Area<\/span><\/strong>. \u00c1rea de almac\u00e9n. El archivo se encuentra en estado de preparado.<\/p>\n<p><strong><span style=\"color: #800000;\">Git directory (repository). Historial o repositorio<\/span><\/strong>. El archivo se encuentra confirmado, se le ha dado el visto bueno. Donde residen los datos y metadatos del proyecto. Es lo que copiamos en nuestros ordenadores cuando descargamos un repositorio.<\/p>\n<p>Entre el \u00e1rea de trabajo y el almac\u00e9n se hacen operaciones como un <strong>add<\/strong> desde trabajo hacia el almac\u00e9n o un <strong>checkout<\/strong> desde el almac\u00e9n hacia el trabajo.<\/p>\n<p>Desde almac\u00e9n se puede hace un <strong>commit<\/strong> hacia el repositorio o un <strong>reset<\/strong> desde el repositorio hacia el almac\u00e9n<\/p>\n<p>Podemos rescatar un archivo del repositorio hacia el working directory con instrucciones o comandos.<\/p>\n<p>Existen muchos comandos podemos visualizarles en la ayuda o en la web.<\/p>\n<p>El git config permite definir la configuraci\u00f3n de git. Es bastante utilizado e importante.<\/p>\n<p>Git init inicializa el repositorio.<\/p>\n<p>Git config \u2013l<br \/>\nLista la configuraci\u00f3n de la carpeta.<\/p>\n<p>No quiero entrar al trapo en esta entrada en los comandos, puesto que anteriormente cree una secci\u00f3n espec\u00edfica relacionada con los comandos (ver enlace inferior).<\/p>\n<p class=\"posts_title\" style=\"text-align: center;\"><strong><a href=\"http:\/\/www.palentino.es\/blog\/el-facebook-de-los-programadores-y-disenadores-uso-basico-de-git-y-acceso-a-repositorios-github\/\">El facebook de los programadores y dise\u00f1adores. Uso b\u00e1sico de Git y acceso a repositorios Github<\/a><\/strong><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.palentino.es\/blog\/el-facebook-de-los-programadores-y-disenadores-uso-basico-de-git-y-acceso-a-repositorios-github\/\" target=\"_blank\">http:\/\/www.palentino.es\/blog\/el-facebook-de-los-programadores-y-disenadores-uso-basico-de-git-y-acceso-a-repositorios-github\/<\/a><\/p>\n<p>Git config \u2013global user.mail oscar@palentino.es<\/p>\n<p>Git config \u2013global core.editor Sublime<\/p>\n<p>Las configuraciones de git se almacenan en un archivo .git config<\/p>\n<p><strong>Resumen de comandos b\u00e1sicos (bueno, repasaremos un poco).<\/strong><\/p>\n<p>Git init\u00a0 \/\/ Creamos un repositorio en el directorio actual\/local. Solo necesitamos estar colocados en la carpeta de nuestro proyecto. Inicializa un nuevo repositorio para el control de cambios.<\/p>\n<p>Git clone direccionURL \/\/ Trae una copia del repositorio central\/remoto a nuestro ordenador. Para clonarle. Traemos una copia a nuestro ordenador para trabajar en local.<\/p>\n<p>Git add nombre_archivo \/\/ A\u00f1ade al repositorio el archivo que le indiquemos. Si indicamos un .punto a\u00f1aderia todos los archivos.<\/p>\n<p>Git commit \u2013am \u201cmensaje\u201d + archivos. \/\/ Quedan almacenadas nuestras modificaciones con mensaje<\/p>\n<p>Git rm archivo \/\/ Borra un archivo del working y del stage<\/p>\n<p>Git mv origen destino \/\/Mueve el archivo o directorio a una nueva ruta.<\/p>\n<p>Git status \/\/ Nos muestra el directorio\/ estado de trabajo local.<\/p>\n<p>Git diff \/\/ Muestra la diferencia entre los cambios que aun no est\u00e1 en stage.<\/p>\n<p>Git diff rama1 rama2 \/\/ Muestra las diferencias entre dos ramas.<\/p>\n<p>Git log \/\/ Muestra la informaci\u00f3n de una rama de trabajo. Podemos marcar las fechas desde hasta.<\/p>\n<p>Git show \/\/ muestra los metadatos y cambios de un commit.<\/p>\n<p>Git reset HEAD nombreArchivo \/\/No incluye el archivo en el pr\u00f3ximo commit.<\/p>\n<p>Get reset \u2013soft HEAD \/\/ Deshace el commit<\/p>\n<p>Git checkout\u00a0 rama \/\/ Recuperar ramas<\/p>\n<p>Git branch \/\/ Muestra las ramas existentes<\/p>\n<p>Git pull \/\/ descarga las \u00faltimas modificaciones remotas del repositorio<\/p>\n<p>Git push \/\/ Subimos los cambios al repositorio<\/p>\n<p>Git fetch \/\/ Trae los cambios desde remoto pero no los fusiona<\/p>\n<p>Git remote \/\/ Muestra los repositorios remotos.<\/p>\n<p>Etc, etc, etc.<\/p>\n<p>Respecto a las banderas o flags son ayudas que nos muestra el estado que se encuentra un documento. R,M C, A, U, etc.<\/p>\n<p><strong>Continuar\u00e9 en la parte II<\/strong><\/p>\n<p><strong>GIT, trabajando con control de versiones.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Actualmente existe una gran demanda en el mercado laboral de conocimiento de aplicaciones que permiten trabajar en equipo y controlar las versiones de los proyectos de desarrollo de software. Lo que se conocen como repositorios y controladores de versiones. Independientemente del sistema operativo que empleemos, el uso de este sistema es elemental. Puesto que nos permite realizar proyectos en trabajo colaborativo. No solamente es necesario conocer un determinado lenguaje para ejercer el trabajo, es preciso tambi\u00e9n saber la l\u00f3gica de funcionamiento que emplean estos gestores de versiones. Git es un sistema de C\u00f3digo Abierto u Open Source y \u00a0adem\u00e1s distribuido, que permite administrar el c\u00f3digo fuente de proyectos grandes y peque\u00f1os. Existen tantos repositorios como usuarios. Cada desarrollador podr\u00e1 disponer del repositorio en local, en la propia m\u00e1quina de trabajo. Un control de versiones (SCV) o administrador de c\u00f3digo fuente es un sistema que almacena los cambios realizados sobre un archivo o un conjunto de archivos a lo largo del tiempo. Podremos recuperar versiones. Nos posibilita retroceder en el tiempo para corregir, modificar o eliminar, editar cambios en el proyecto. Existen muchas alternativas a GIT, como pueden ser Mercurial, SVN, Darcs, CVS, etc. GIT fue creado por linus Torvarls, el creador del kernel de GNU\\Linux. GIT es r\u00e1pido, ofrece un dise\u00f1o sencillo, perfectamente v\u00e1lido para proyectos grandes (ejemplo el n\u00facleo de Linux). El sistema de ramas o branches es excepcional. Un SCV nos debe permitir restaurar los hist\u00f3ricos de forma sencilla, cada uno de ellos queda identificado con una cadena numerada o ID (HASH). GIT ofrece grandes ventajas para la empresa. Cuando trabajamos en un proyecto empresarial a diario, sin un SCV, los guardados realizados ocupaban m\u00e1s espacio, y duplicaban informaci\u00f3n, no existe control de archivos, los cambios e informaci\u00f3n que ha ido agreg\u00e1ndose simplemente no se registra. Actualmente este<\/p>\n<p><a href=\"https:\/\/www.palentino.es\/blog\/git-trabajando-con-control-de-versiones\/\">(M\u00e1s)\u2026<\/a><\/p>\n","protected":false},"author":1,"featured_media":7088,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32,594,304,7],"tags":[595,352],"class_list":["post-7445","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-formacion","category-git-2","category-management","category-software","tag-control-de-versiones","tag-git"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/7445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=7445"}],"version-history":[{"count":5,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/7445\/revisions"}],"predecessor-version":[{"id":7450,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/7445\/revisions\/7450"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/7088"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=7445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=7445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=7445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}