{"id":109,"date":"2016-10-26T01:00:53","date_gmt":"2016-10-26T01:00:53","guid":{"rendered":"https:\/\/blog.jkanework.com\/post.php?idpost=109"},"modified":"2016-10-26T01:00:53","modified_gmt":"2016-10-26T01:00:53","slug":"aprende-git-y-empieza-a-trabajar-en-grupo","status":"publish","type":"post","link":"https:\/\/blog.jkanetwork.com\/?p=109","title":{"rendered":"Aprende GIT y empieza a trabajar en grupo"},"content":{"rendered":"<p>Git es una herramienta para hacer control de versiones de Linus Torvalds (si, el mismo que linux) en su origen para controlar la propia evoluci&oacute;n del kernel linux. A d&iacute;a de hoy es uno de los SCM (<em>Source code manager<\/em>) m&aacute;s populares aunque no precisamente por su facilidad de uso.<\/p>\n<p>En este tutorial veremos como usar un repositorio b&aacute;sico remoto. Damos por supuesto que ya sabes manejarte con facilidad en sistemas gnu\/linux y eres ya un usuario experimentado de consola (terminal).<\/p>\n<p>Lo primero es que todos los que vayan a usar el repositorio deber&iacute;an tener una cuenta en la plataforma remota que se vaya a usar, tambi&eacute;n pod&eacute;is montar vuestra propia plataforma aunque si pod&eacute;is hacer eso no se que est&aacute;is haciendo aqu&iacute; ;). Nosotros recomendamos GitLab que es la plataforma que usamos en JKA Network (sin contar los espejos).&nbsp;<\/p>\n<p>Si ya ten&eacute;is la cuenta abierta lo siguiente es instalar git en vuestro sistema, tan f&aacute;cil como&nbsp;<em>pacman -S git<\/em> en Archlinux o&nbsp;<em>apt-get install git&nbsp;<\/em>en Debian\/Ubuntu. Luego de esto ejecutamos los dos siguientes comandos:&nbsp;<em>git config &#8211;global user.name &quot;Tu nombre&quot;; git config &#8211;global user.mail &quot;tu@mail.com&quot;&nbsp;<\/em>Si quer&eacute;is tener otro nombre o correo en un repositorio especifico en la carpeta del repositorio ejecutad lo mismo pero sin el <em>&#8211;global&nbsp;<\/em><\/p>\n<p>Tras esto podemos hacer dos cosas, una hacer una cuenta para cada usuario y luego dar permisos de escritura en el repositorio en concreto a todos esos usuarios o usar validacion por ssh con claves RSA. Nuestra recomedaci&oacute;n es la segunda opci&oacute;n porque aunque no impide que cada usuario tenga su propia cuenta permite subir modificaciones sin logearse. En el caso de la primera opci&oacute;n basta con hacer&nbsp;<em>git clone https:\/\/url.del.repositorio.git<\/em> pero para el segundo caso hay que hacer lo siguiente<\/p>\n<ul>\n<li>Instalar ssh en tu distro<\/li>\n<li>generar una clave mediante el comando <em>ssh-keygen&nbsp;<\/em>, luego dais el nombre al archivo (ejemplo &quot;clave&quot;) y os generar&aacute; dos archivos en la carpeta .ssh de vuestro directorio home, una llamada clave.pub y otra clave, la .pub es vuestra clave p&uacute;blica y la otra es la privada. Luego ten&eacute;is que hacer un archivo llamado config dentro de la carpeta .ssh y tiene que tener la siguiente forma:&nbsp;<br \/>\n\t<em>Host url.sin_http_del_host.com<br \/>\n\t&nbsp; IdentityFile ~\/.ssh\/archivo_sin_pub<br \/>\n\t&nbsp; User el_usuario<\/em><\/p>\n<p>\tTras esto cada vez que clonemos un repositorio tenemos que hacerlo desde la url ssh no la https. La primera vez nos pedir&aacute; aceptar la clave<\/li>\n<li>Antes de terminar debes incluir la clave publica en la plataforma que us&eacute;is.&nbsp;<\/li>\n<li>Es importante que el archivo lo compartan todos los usuario de repositorio o que cada usuario tenga el suyo y todas las claves publicas est&eacute;n en la plataforma.&nbsp;<\/li>\n<li>Los archivos con las claves privadas deben tener permisos 600 o ssh no ejecutar&aacute;<\/li>\n<\/ul>\n<p>Si ya hab&eacute;is terminado de configurar la plataforma lo siguiente es ya crear el repositorio y empezar a trabajar.<\/p>\n<p>Lo primero es crear el repositorio en la plataforma y luego que cada usuario lo clone en su pc. Tras esto hay dos comandos que deb&eacute;is conocer a la perfeci&oacute;n, son&nbsp;<em>git pull&nbsp;<\/em> y&nbsp;<em> git push.<\/em> El primero debes ejecutarlo siempre antes de hacer ninguna modificacio no vaya a ser que otro usuario haya hecho cualquier cosa que te impida luego fusionarlo todo. El segundo lo que hace es subir todas las modificaciones confirmadas. A nivel b&aacute;sico sin usar ramas lo que os digo ahora no es relevante pero si no es importante recordar que git push actua sobre la rama que est&eacute;is por lo que si inclu&iacute;s ramas deb&eacute;is especificarlo con&nbsp;<em>git push origin nombre_de_rama.<\/em><\/p>\n<p>Para mover algo de sitio no basta con hacer mv, hay que hacer&nbsp;<em>git mv<\/em> o no se efectuar&aacute; en la rama ese cambio, si borrais lo mismo, hay que usar&nbsp;<em>git rm<\/em>. Para a&ntilde;adir algo es con&nbsp;<em>git add<\/em>. Si us&aacute;is&nbsp;<em>git add -A<\/em> todos los&nbsp;<em>mv, rm &#8230;<\/em> se a&ntilde;aden tambi&eacute;n. Estos tres &uacute;ltimos comandos siempre especificando el archivo (acepta expresiones regulares como *,{},[]&#8230;). Para confirmarlo todo usad&nbsp;<em>git commit -m &quot;Descripcion breve de lo que hab&eacute;is hecho&quot;&nbsp;<\/em> y luego ya us&aacute;is el&nbsp;<em>git push origin rama.<\/em><\/p>\n<p>Para ver las ramas se usa&nbsp;<em>git branch -a<\/em>, para hacer rama local a partir de una remota con&nbsp;<em>git cheackout -t origin\/nombre_de_la_rama,&nbsp;<\/em>para saltar de rama en rama con&nbsp;<em>git cheackout nombre_de_rama<\/em>. Para fusionar usar&nbsp;<em>git merge rama<\/em> esto fusiona en la rama donde estoy la ramificaci&oacute;n correspondiente. Para todo el sistema de ramas es preferible que us&eacute;is la interfaz de la plataforma que us&eacute;is ya que suelen funcionar bien y os ahorrar&aacute;n varios quebraderos de cabeza.<\/p>\n<p><strong>&#8211;A&ntilde;adido&#8211;<\/strong><\/p>\n<p>Si no quer&eacute;is que algunos archivos sean a&ntilde;adidos por git basta con hacer un archivo en la carpeta raiz del repo con nombre .gitignore. En &eacute;l poned lo que no quer&eacute;is que se a&ntilde;ada, puede ser una extensi&oacute;n (Ej: *.html), un nombre (Ej: contrase&ntilde;as), carpetas (Ej: mis_archivos\/) o cualquier cosa pesonalizada (Ej *.c.~*~). Os dejo un ejemplo:<\/p>\n<p><em>.bak*\/<br \/>\n*.c.~*~<br \/>\n*.html<br \/>\n*.exe<\/em><\/p>\n<p><strong>&#8211;Fin de A&ntilde;adido&#8211;<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Esto es todo a nivel b&aacute;sico c&oacute;mo usar git, si ten&eacute;is alguna duda no olvid&eacute;is dejarla en los comentarios, si os a gustado dad like al post. Si quer&eacute;is estar atentos a nuestos art&iacute;culos no olvid&eacute;is seguirnos en Twitter. Como siempre, un saludo y muchas gracias por leernos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Git es una herramienta para hacer control de versiones de Linus Torvalds (si, el mismo que linux) en su origen para controlar la propia evoluci&oacute;n del kernel linux. A d&iacute;a de hoy es uno de los SCM (Source code manager) m&aacute;s populares aunque no precisamente por su facilidad de uso. En este tutorial veremos como [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-109","post","type-post","status-publish","format-standard","hentry","category-tutoriales"],"_links":{"self":[{"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/posts\/109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=109"}],"version-history":[{"count":0,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=\/wp\/v2\/posts\/109\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jkanetwork.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}