{"id":7356,"date":"2019-07-16T10:31:33","date_gmt":"2019-07-16T10:31:33","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=7356"},"modified":"2019-07-16T10:39:57","modified_gmt":"2019-07-16T10:39:57","slug":"git-sotfware-de-control-de-versiones","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/","title":{"rendered":"GIT &#8211; Sotfware de control de versiones"},"content":{"rendered":"<p><strong>Git<\/strong> es un sistema de control de versiones de c\u00f3digo abierto que permite manejar las modificaciones de cualquier tipo de proyecto con rapidez y eficiencia.<\/p>\n<p>Un control de versiones es un sistema que registra los cambios realizados en un archivo o conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones espec\u00edficas m\u00e1s adelante.<\/p>\n<p>A medida que un proyecto va creciendo, se van modificando o cambiando archivos. Una manera eficiente para gestionar estos cambios es utilizar un sistema de control de versiones. Existen varios sistemas de este tipo en el mercado pero, el m\u00e1s popular hoy en d\u00eda es <strong>Git<\/strong>.<\/p>\n<p>Actualmente, es indispensable usarlo, sobretodo en proyectos complejos, ya que necesitamos herramientas para controlar los cambios y poder ir atr\u00e1s r\u00e1pida y f\u00e1cilmente si fuera necesario.<\/p>\n<p>Si eres dise\u00f1ador gr\u00e1fico o web y quieres mantener cada versi\u00f3n de una imagen o dise\u00f1o (es algo que sin duda vas a querer), usar un sistema de control de versiones (<strong>VCS<\/strong> por sus siglas en ingl\u00e9s) es una decisi\u00f3n muy acertada.<\/p>\n<p>Si eres programador y has metido la pata en la \u00faltima modificaci\u00f3n en la que has tocado cientos de archivos, la soluci\u00f3n que permite un sistema de control de versiones para volver atr\u00e1s te puede salvar la vida.<\/p>\n<p>Un sistema de control de versiones te permite regresar a versiones anteriores de tus archivos, regresar a una versi\u00f3n anterior del proyecto completo, comparar cambios a lo largo del tiempo, ver qui\u00e9n modific\u00f3 por \u00faltima vez algo que pueda estar causando problemas, ver qui\u00e9n introdujo un problema y cu\u00e1ndo, y mucho m\u00e1s.<\/p>\n<p>Usar un <strong>VCS<\/strong> tambi\u00e9n significa generalmente que si arruinas o pierdes archivos, ser\u00e1 posible recuperarlos f\u00e1cilmente.<\/p>\n<p>Un m\u00e9todo de control de versiones usado por muchas personas es copiar los archivos a otro directorio (quiz\u00e1s indicando la fecha y hora en que lo hicieron, si son ingeniosos). Este m\u00e9todo es muy com\u00fan porque es muy sencillo, pero tambi\u00e9n es propenso a errores. Es f\u00e1cil olvidar en qu\u00e9 directorio te encuentras, y guardar accidentalmente en el archivo equivocado o sobrescribir archivos que no quer\u00edas. Los cambios no quedan documentados y es f\u00e1cil olvidar cual fue la modificaci\u00f3n despu\u00e9s de un largo tiempo.<\/p>\n<p>Por esto y mucho m\u00e1s, quiero hacerte saber que <strong>Git<\/strong> es un herramienta que te va a permitir todo esto y mucho m\u00e1s.<\/p>\n<h3>Fundamental, los 3 estados de Git<\/h3>\n<p>Ahora presta atenci\u00f3n. Esto es lo m\u00e1s importante que debes recordar acerca de <strong>Git<\/strong> si quieres que el resto de tu proceso de aprendizaje prosiga sin problemas.<\/p>\n<p><strong>Git<\/strong> tiene tres estados principales en los que se pueden encontrar tus archivos:<\/p>\n<ul>\n<li>confirmado (committed)<\/li>\n<li>modificado (modified)<\/li>\n<li>preparado (staged)<\/li>\n<\/ul>\n<p>Confirmado significa que los datos est\u00e1n almacenados de manera segura en tu base de datos local.<\/p>\n<p>Modificado significa que has modificado el archivo pero todav\u00eda no lo has confirmado a tu base de datos.<\/p>\n<p>Y preparado significa que has marcado un archivo modificado en su versi\u00f3n actual para que vaya en tu pr\u00f3xima confirmaci\u00f3n.<\/p>\n<p>Esto nos lleva a las tres secciones principales de un proyecto de <strong>Git<\/strong>: El directorio de <strong>Git<\/strong> (Git directory), el directorio de trabajo (working directory), y el \u00e1rea de preparaci\u00f3n (staging area).<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/ciclo-de-vida-git.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-7357\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/ciclo-de-vida-git.png\" alt=\"\" width=\"800\" height=\"330\" srcset=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/ciclo-de-vida-git.png 800w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/ciclo-de-vida-git-300x124.png 300w, https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/ciclo-de-vida-git-768x317.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>El directorio de <strong>Git<\/strong> es donde se almacenan los metadatos y la base de datos de objetos para tu proyecto. Es la parte m\u00e1s importante de <strong>Git<\/strong>, y es lo que se copia cuando clonas un repositorio desde otra computadora.<\/p>\n<p>El directorio de trabajo es una copia de una versi\u00f3n del proyecto. Estos archivos se sacan de la base de datos comprimida en el directorio de <strong>Git<\/strong>, y se colocan en disco para que los puedas usar o modificar.<\/p>\n<p>El \u00e1rea de preparaci\u00f3n es un archivo, generalmente contenido en tu directorio de <strong>Git<\/strong>, que almacena informaci\u00f3n acerca de lo que va a ir en tu pr\u00f3xima confirmaci\u00f3n. A veces se le denomina \u00edndice (\u201cindex\u201d), pero se est\u00e1 convirtiendo en est\u00e1ndar el referirse a ella como el \u00e1rea de preparaci\u00f3n.<\/p>\n<p>De este bloque te debe quedar claro que <strong>Git<\/strong> tiene 3 estados que los archivos pueden tener:<\/p>\n<ul>\n<li>Commited<\/li>\n<li>Modified<\/li>\n<li>Staged<\/li>\n<\/ul>\n<h3>La l\u00ednea de comandos<\/h3>\n<p>Existen varias formas de usar <strong>Git<\/strong>.<\/p>\n<p>Por un lado, tenemos las herramientas originales de l\u00ednea de comandos, y por otro lado tenemos una gran variedad de interfaces de usuario con distintas capacidades.<\/p>\n<p>Si tienes conocimientos, lo ideal es utilizar <strong>Git<\/strong> desde la l\u00ednea de comandos. La l\u00ednea de comandos es el \u00fanico lugar donde puedes ejecutar\u00a0todos\u00a0los comandos de <strong>Git<\/strong>.<\/p>\n<p>La mayor\u00eda de interfaces gr\u00e1ficas de usuario solo implementan una parte de las caracter\u00edsticas de <strong>Git<\/strong> por motivos de simplicidad. Si t\u00fa sabes c\u00f3mo realizar algo desde la l\u00ednea de comandos, seguramente ser\u00e1s capaz de averiguar c\u00f3mo hacer lo mismo desde una interfaz gr\u00e1fica. Sin embargo, la relaci\u00f3n opuesta no es necesariamente cierta. As\u00ed mismo, la decisi\u00f3n de qu\u00e9 cliente gr\u00e1fico utilizar depende totalmente de tu gusto, pero\u00a0todos\u00a0los usuarios tendr\u00e1n las herramientas de l\u00ednea de comandos instaladas y disponibles.<\/p>\n<h3>Instalaci\u00f3n de Git<\/h3>\n<p>Antes de empezar a utilizar <strong>Git<\/strong>, tienes que instalarlo en tu ordenador.<\/p>\n<p>La instalaci\u00f3n es muy sencilla en <em>Windows<\/em>. Tan solo tienes que descargar el archivo ejecutable desde el siguiente enlace: <a href=\"https:\/\/git-scm.com\/download\/win\">https:\/\/git-scm.com\/download\/win<\/a><\/p>\n<p>Una vez est\u00e9 completamente descargado, haz doble clic para instalarlo. Sigue los pasos de instalaci\u00f3n para configurarlo seg\u00fan tu necesidad.<\/p>\n<h3>Configuraci\u00f3n de GIT<\/h3>\n<p>Lo primero que debes hacer cuando instalas <strong>Git<\/strong> es establecer tu nombre de usuario y direcci\u00f3n de correo electr\u00f3nico como m\u00ednimo. Esto es importante porque los \u00abcommits\u00bb de <strong>Git<\/strong> usan esta informaci\u00f3n, y es introducida de manera inmutable en los commits que env\u00edas.<\/p>\n<p>Observa a continuaci\u00f3n un ejemplo para crear un nombre de usuario y email:<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"asm\" style=\"font-family:monospace;\">$ git config <span class=\"sy0\">--<\/span>global user<span class=\"sy0\">.<\/span><span class=\"kw4\">name<\/span> <span class=\"st0\">&quot;John Doe&quot;<\/span>\n&nbsp;\n$ git config <span class=\"sy0\">--<\/span>global user<span class=\"sy0\">.<\/span>email johndoe@example<span class=\"sy0\">.<\/span>com<\/pre><\/div><\/div>\n<h3>Como crear un repositorio<\/h3>\n<p>Desde la l\u00ednea de comandos sit\u00faate en el directorio de tu proyecto.<\/p>\n<p>En <em>Windows<\/em> puedes ir directamente al directorio de carpetas, situarte en la carpeta principal del proyecto para hacer clic con el bot\u00f3n secundario del rat\u00f3n.<\/p>\n<p>En el men\u00fa desplegable que aparece puedes pulsar en \u201cGit Bash Here\u201d.<\/p>\n<p>De esta forma, entras en la l\u00ednea de comandos de <strong>Git<\/strong> ya situado directamente en el directorio del proyecto.<\/p>\n<p>Una vez ah\u00ed, ejecuta lo siguiente:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"asm\" style=\"font-family:monospace;\">$ git init<\/pre><\/div><\/div>\n<p>Esto crea un subdirectorio nuevo llamado .git, el cual contiene todos los archivos necesarios del repositorio. Ser\u00eda como un esqueleto de un repositorio de <strong>Git<\/strong>.<\/p>\n<p>Estoy mandando la instrucci\u00f3n para indicar a Git que quiero empezar a controlar este proyecto.<\/p>\n<p>Todav\u00eda no hay nada en tu proyecto que est\u00e9 bajo seguimiento. Si deseas empezar a controlar versiones de archivos existentes (a diferencia de un directorio vac\u00edo), probablemente debes comenzar el seguimiento de esos archivos y hacer una confirmaci\u00f3n inicial. Puedes conseguirlo con unos pocos comandos <em>git add<\/em> para especificar qu\u00e9 archivos quieres controlar, seguidos de un <em>git commit<\/em> para confirmar los cambios.<\/p>\n<h3>Comandos b\u00e1sicos<\/h3>\n<p>Para pasar los archivos de Working directory a Staging area, lo puedes hacer as\u00ed:<\/p>\n<div id=\"wpshdo_3\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_3\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_3\"><\/a><a id=\"wpshat_3\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_3\"  onClick=\"javascript:wpsh_toggleBlock(3)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_code(3)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_print(3)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_3\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"asm\" style=\"font-family:monospace;\">git <span class=\"kw1\">add<\/span> <span class=\"sy0\">.<\/span><\/pre><\/div><\/div>\n<p>Para ver el estado en el que est\u00e1n tus archivos puedes hacer lo siguiente:<\/p>\n<div id=\"wpshdo_4\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_4\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_4\"><\/a><a id=\"wpshat_4\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_4\"  onClick=\"javascript:wpsh_toggleBlock(4)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_code(4)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_4\" onClick=\"javascript:wpsh_print(4)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_4\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"asm\" style=\"font-family:monospace;\">git status<\/pre><\/div><\/div>\n<p>Para pasar del staging area al repository (snapshop) puedes hacer lo siguiente:<\/p>\n<div id=\"wpshdo_5\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_5\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_5\"><\/a><a id=\"wpshat_5\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_5\"  onClick=\"javascript:wpsh_toggleBlock(5)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_5\" onClick=\"javascript:wpsh_code(5)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_5\" onClick=\"javascript:wpsh_print(5)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_5\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"asm\" style=\"font-family:monospace;\">git commit \u2013m\u201dmensaje\u201d<\/pre><\/div><\/div>\n<p>El texto \u00abmensaje\u00bb que aparece entre comillas lo puedes cambiar para indicar detalles de la modificaci\u00f3n y as\u00ed saber a que se corresponde.<\/p>\n<p>Para ver el historial de confirmaciones (commits), puedes hacer:<\/p>\n<div id=\"wpshdo_6\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_6\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_6\"><\/a><a id=\"wpshat_6\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_6\"  onClick=\"javascript:wpsh_toggleBlock(6)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_6\" onClick=\"javascript:wpsh_code(6)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_6\" onClick=\"javascript:wpsh_print(6)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_6\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"asm\" style=\"font-family:monospace;\">git log<\/pre><\/div><\/div>\n<p>Para ver o crear ramas:<\/p>\n<div id=\"wpshdo_7\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_7\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_7\"><\/a><a id=\"wpshat_7\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_7\"  onClick=\"javascript:wpsh_toggleBlock(7)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_7\" onClick=\"javascript:wpsh_code(7)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_7\" onClick=\"javascript:wpsh_print(7)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_7\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"asm\" style=\"font-family:monospace;\">git branch<\/pre><\/div><\/div>\n<p>Y para cambiar entre ramas:<\/p>\n<div id=\"wpshdo_8\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_8\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_8\"><\/a><a id=\"wpshat_8\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_8\"  onClick=\"javascript:wpsh_toggleBlock(8)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_8\" onClick=\"javascript:wpsh_code(8)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_8\" onClick=\"javascript:wpsh_print(8)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_8\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"asm\" style=\"font-family:monospace;\">git checkout master<\/pre><\/div><\/div>\n<h3>Trabajar con remotos<\/h3>\n<p>Hasta ahora solo hemos visto como trabajar de forma independiente pero, <strong>Git<\/strong> permite trabajar remotamente con otros usuarios.<\/p>\n<p>Para poder colaborar en cualquier proyecto <strong>Git<\/strong>, necesitas saber c\u00f3mo gestionar repositorios remotos.<\/p>\n<p>Los repositorios remotos son versiones de tu proyecto que est\u00e1n hospedadas en Internet en cualquier otra red. Puedes tener varios de ellos, y en cada uno tendr\u00e1s generalmente permisos de solo lectura o de lectura y escritura.<\/p>\n<p>Colaborar con otras personas implica gestionar estos repositorios remotos y enviar y traer datos de ellos cada vez que necesites compartir tu trabajo. Gestionar repositorios remotos incluye saber c\u00f3mo a\u00f1adir un repositorio remoto, eliminar los remotos que ya no son v\u00e1lidos, gestionar varias ramas remotas y definir si deben rastrearse o no, y m\u00e1s.<\/p>\n<h3>Conclusi\u00f3n<\/h3>\n<p><strong>GIT<\/strong> es un complemento perfecto para poder trabajar en equipo y no machacarse entre los integrantes del equipo de desarrollo.<\/p>\n<p>Controlar los cambios que se han realizado en el c\u00f3digo y mantener un registro es un avance importante. Adem\u00e1s, tener la posibilidad de volver atr\u00e1s f\u00e1cilmente no tiene precio.<\/p>\n<p>El funcionamiento habitual utilizando <strong>Git<\/strong> es que cada integrante del grupo pueda hacer su trabajo e ir subiendo a <strong>Git<\/strong> para mezclar el c\u00f3digo de manera perfecta e inteligente ahorrando mucho tiempo.<\/p>\n<p>Para trabajar en una empresa es fundamental. Debes aprenderlo si o si ya que utilizando un sistema de control de versiones da pie a que eres m\u00e1s profesional y significa que est\u00e1s preparado para trabajar en equipo.<\/p>\n<p>No tengas miedo a la linea de comandos ni a la extensa documentaci\u00f3n que ofrecen este tipo de sistemas. <strong>Git<\/strong> es f\u00e1cil de aprender. En tu primer d\u00eda de aprendizaje ver\u00e1s que estar\u00e1s haciendo tus primeros <em>commits<\/em>.<\/p>\n<p>Utilizando un sistema de control de versiones, el control y orden absoluto del proyecto est\u00e1 garantizado siempre y cuando lo sepas utilizarlo bien.<\/p>\n<p>\u00bfConoces alg\u00fan sistema de control de versiones mejor que <strong>Git<\/strong>?<\/p>\n<p>\u00bfHas probado <strong>Git<\/strong>?<\/p>\n<p>Env\u00eda un comentario o da tu opini\u00f3n.<\/p>\n<p>\u00bfNecesitas saber m\u00e1s?<\/p>\n<p><a href=\"https:\/\/git-scm.com\/book\/es\/v2\" target=\"_blank\" rel=\"noopener noreferrer\">Ver libro en espa\u00f1ol<\/a><\/p>\n<p><a href=\"https:\/\/git-scm.com\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">Documentaci\u00f3n completa<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GIT sistema de control de versiones m\u00e1s popular. Tutorial de iniciaci\u00f3n a trav\u00e9s de la l\u00ednea de comandos. Control y orden absoluto de tus proyectos.<\/p>\n","protected":false},"author":1,"featured_media":7358,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-7356","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-herramientas"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>GIT - Sotfware de control de versiones - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"GIT sistema de control de versiones m\u00e1s popular. Tutorial de iniciaci\u00f3n a trav\u00e9s de la l\u00ednea de comandos. Control y orden absoluto de tus proyectos.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GIT - Sotfware de control de versiones - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"GIT sistema de control de versiones m\u00e1s popular. Tutorial de iniciaci\u00f3n a trav\u00e9s de la l\u00ednea de comandos. Control y orden absoluto de tus proyectos.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-16T10:31:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-16T10:39:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/git-sotfware-de-control-de-versiones.png\" \/>\n\t<meta property=\"og:image:width\" content=\"250\" \/>\n\t<meta property=\"og:image:height\" content=\"250\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/\",\"name\":\"GIT - Sotfware de control de versiones - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/git-sotfware-de-control-de-versiones.png\",\"datePublished\":\"2019-07-16T10:31:33+00:00\",\"dateModified\":\"2019-07-16T10:39:57+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"GIT sistema de control de versiones m\u00e1s popular. Tutorial de iniciaci\u00f3n a trav\u00e9s de la l\u00ednea de comandos. Control y orden absoluto de tus proyectos.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/git-sotfware-de-control-de-versiones.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/git-sotfware-de-control-de-versiones.png\",\"width\":250,\"height\":250},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GIT &#8211; Sotfware de control de versiones\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GIT - Sotfware de control de versiones - Jose Aguilar Blog","description":"GIT sistema de control de versiones m\u00e1s popular. Tutorial de iniciaci\u00f3n a trav\u00e9s de la l\u00ednea de comandos. Control y orden absoluto de tus proyectos.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"GIT - Sotfware de control de versiones - Jose Aguilar Blog","og_description":"GIT sistema de control de versiones m\u00e1s popular. Tutorial de iniciaci\u00f3n a trav\u00e9s de la l\u00ednea de comandos. Control y orden absoluto de tus proyectos.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2019-07-16T10:31:33+00:00","article_modified_time":"2019-07-16T10:39:57+00:00","og_image":[{"width":250,"height":250,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/git-sotfware-de-control-de-versiones.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/","url":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/","name":"GIT - Sotfware de control de versiones - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/git-sotfware-de-control-de-versiones.png","datePublished":"2019-07-16T10:31:33+00:00","dateModified":"2019-07-16T10:39:57+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"GIT sistema de control de versiones m\u00e1s popular. Tutorial de iniciaci\u00f3n a trav\u00e9s de la l\u00ednea de comandos. Control y orden absoluto de tus proyectos.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/git-sotfware-de-control-de-versiones.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2019\/07\/git-sotfware-de-control-de-versiones.png","width":250,"height":250},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/git-sotfware-de-control-de-versiones\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GIT &#8211; Sotfware de control de versiones"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/7356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=7356"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/7356\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7358"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=7356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=7356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=7356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}