{"id":71,"date":"2020-01-16T15:25:57","date_gmt":"2020-01-16T15:25:57","guid":{"rendered":"https:\/\/agustinducca.com\/blog\/?p=71"},"modified":"2020-01-24T17:43:34","modified_gmt":"2020-01-24T17:43:34","slug":"git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional","status":"publish","type":"post","link":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/","title":{"rendered":"GIT: 17 trucos y comandos para que lo domines como un profesional"},"content":{"rendered":"\n<p>Hoy en d\u00eda, el uso de un controlador de versiones de nuestro c\u00f3digo es un punto obligado en los skills de cualquier desarrollador. En ese sentido, <a href=\"https:\/\/git-scm.com\/\">Git<\/a> es el m\u00e1s popular y el m\u00e1s solicitado por las empresas a la hora de enumerar los conocimientos b\u00e1sicos que esperan de un developer.<\/p>\n\n\n\n<p>Muchos programadores se valen de un abanico de comandos bastante limitado pero que, en la mayor\u00eda de los casos, es suficiente para \u00absobrevivir\u00bb en la industria del software. El problema se presenta cuando se enfrentan al primer conflicto, ya sea por algo simple como dos ramas que se niegan a <em>mergearse<\/em> o por un error catastr\u00f3fico que ha hecho que nos carguemos todo el repositorio. <\/p>\n\n\n\n<p>Si este es tu caso o si simplemente te gustar\u00eda conocer mas sobre esta potente herramienta, te invito a seguir leyendo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comandos \u00fatiles de Git<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">1- Pasar cambios a nueva rama: Mejorando tu GitFlow<\/h4>\n\n\n\n<p>Cu\u00e1ntas veces te ha pasado que comienzas a trabajar en un nuevo <em>feature<\/em>, algo nuevo que quieres probar o que el cliente solicit\u00f3 y fruto de un brote de creatividad avanzas a un ritmo imparable. Escribes 100, 200 l\u00edneas de c\u00f3digo y de repente te das cuenta de que estabas trabajando en la rama <em>master<\/em>.  Tranquilo, que la soluci\u00f3n es mas simple de lo que parece.<\/p>\n\n\n\n<p>Solo necesitas ejecutar lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git checkout -b nueva-rama<\/pre>\n\n\n\n<p>Con este sencillo comando, todos los cambios que aun no hayamos agregado con <em>git add<\/em> pasar\u00e1n a una nueva rama y podremos seguir trabajando con la tranquilidad de que nuestro master no se ver\u00e1 afectado.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2- Guardar en <em>stash <\/em>nuestros cambios<\/h4>\n\n\n\n<p>Si, en cambio, lo que queremos es pasarnos a otra rama pero aun no estamos listos para hacer <em>commit <\/em>de nuestro trabajo en el <em>branch <\/em>actual, podemos almacenar nuestros avances en stash para luego volver a ellos.<\/p>\n\n\n\n<p>Para guardar todo aquello que no hayamos <em>commiteado<\/em> en stash, debemos ejecutar:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git stash<\/pre>\n\n\n\n<p>Con ello, podremos cambiar de rama sin problemas y podremos regresar a nuestro trabajo <em>stasheado<\/em> mas tarde.<\/p>\n\n\n\n<p>Si lo que queremos es pasar todo lo que tenemos en stash a una nueva rama, podemos hacerlo con:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git stash branch nueva-rama<\/pre>\n\n\n\n<p>Para ver la lista de archivos que est\u00e1n en nuestro stash, corremos el comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git stash list<\/pre>\n\n\n\n<p>Por ultimo, si queremos limpiar el stash y deshacernos de todo lo que ten\u00edamos all\u00ed, hacemos los siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git stash drop<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3- Restaurar archivos como un profesional<\/h4>\n\n\n\n<p>Si te ha pasado que has hecho cambios que no querias en un archivo y quieres restaurarlo con git, seguramente lo has hecho usando<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git restore archivo.ext<\/pre>\n\n\n\n<p>Eso esta bien cuando se trata de un solo fichero, \u00bfpero qu\u00e9 pasa cuando debemos restaurar decenas de ellos? La respuesta es simple, con git restore (de nuevo).<\/p>\n\n\n\n<p>Si queremos restaurar una serie de archivos con la misma extensi\u00f3n, pongamos por caso, todo los archivos <em>.css<\/em> que hemos modificado, podemos hacerlo as\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git restore '*.css' <\/pre>\n\n\n\n<p>Para restaurar todo el directorio actual:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git restore .<\/pre>\n\n\n\n<p>Y si queremos hacer un restore de TODO a partir del directorio principal:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git restore :\/ <\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">4- Limpiar nuestro repositorio de archivos no <em>trackeados<\/em><\/h4>\n\n\n\n<p>Muchas veces puede ocurrir que queramos <em>limpiar<\/em> nuestro directorio de trabajo de todo aquello que no hemos trackeado. Para hacer esto, Git cuenta con el comando <em>clean<\/em>.<\/p>\n\n\n\n<p>Primero, es una buena practica (y nos evitara m\u00e1s de un dolor de cabeza) verificar qu\u00e9 archivos va a eliminar. Para ello, nos valemos del siguiente comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git clean --dry-run <\/pre>\n\n\n\n<p>Una vez que estamos seguros de que no estamos borrando nada importante, procedemos: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git clean -f <\/pre>\n\n\n\n<p>Hay que tener en cuenta que este comando no eliminar\u00e1 nada que este dentro de una carpeta ni tampoco aquellos archivos incluidos en nuestro <em>.gitignore<\/em>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5- Agregar cambios a un commit<\/h4>\n\n\n\n<p> \u00bfAlguna vez te ocurri\u00f3 que deb\u00edas hacer una serie de cambios y luego de hacer el commit te das cuenta de que te faltaron cosas? Esto puede arreglarse f\u00e1cilmente con <em>amend<\/em>.<\/p>\n\n\n\n<p>Lo \u00fanico que deber\u00e1s hacer es agregar los cambios que quieras incluir en el ultimo commit que hiciste mediante git add y luego ejecutar<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git commit --amend<\/pre>\n\n\n\n<p>Esto agregar\u00e1 los cambios sin dejar registros en la historia de tu repositorio. Este comando tambi\u00e9n es \u00fatil si quieres cambiar el mensaje de tu confirmaci\u00f3n antes de hacer un <em>push<\/em>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6- Ver las ramas remotas de un repositorio<\/h4>\n\n\n\n<p>Seguramente el comando <em>git branch<\/em> no sea ninguna novedad para vos, pero habr\u00e1s notado que este solo te muestra las ramas locales de tu repositorio.  \u00bfComo podemos ver las ramas remotas si aun no las <em>trajimos<\/em>?<\/p>\n\n\n\n<p>Con el comando<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git branch -r <\/pre>\n\n\n\n<p>obtendremos un listado de los branches remotos. Y si deseamos compararlas con las ramas locales, podemos hacerlo con <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git branch -a<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">7- Buscar una palabra en la historia de tus commits<\/h4>\n\n\n\n<p>Quiz\u00e1s en alg\u00fan punto hayas querido saber en qu\u00e9 momento usaste cierta variable o funci\u00f3n, pero buscarlo manualmente entre los cientos de commits que componen tu proyecto se vuelve una tarea colosal. No te preocupes, como en casi todos los casos, hay un comando de Git que nos permite hacerlo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git log -S miFuncionPerdida<\/pre>\n\n\n\n<p>Con esta simple instrucci\u00f3n es posible rastrear cualquier cosa que alguna vez hayamos <em>commiteado<\/em> en nuestro proyecto.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">8- Ver el historial de commits por usuario<\/h4>\n\n\n\n<p>Si estas llevando adelante un proyecto en el que participan varias personas, es posible que en alg\u00fan momento quieras conocer la cantidad de contribuciones que ha hecho cada una de ellas. Para esto, nuestro controlador de versiones favorito, cuenta con una serie de instrucciones sumamente \u00fatiles:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git shortlog<\/pre>\n\n\n\n<p>Muestra el historial de commits agrupados por usuario.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git shortlog -sn<\/pre>\n\n\n\n<p>Cuenta la cantidad de commits que cada usuario ha realizado, sin considerar los que han sido borrados.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git shortlog -sn --all  <\/pre>\n\n\n\n<p>Hace lo mismo que el anterior, pero este incluye los commits borrados y mergeados.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git shortlog -sn --all --no-merges<\/pre>\n\n\n\n<p>Tal como puede suponerse, este comando cuenta los commits, exlcuyendo los que han sido <em>mergeados<\/em>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">9- Encontrar al <em>culpable <\/em>de un cambio<\/h4>\n\n\n\n<p>Siguiendo el ejemplo anterior, imagina que alguno de los desarrolladores que trabajan en tu equipo agreg\u00f3 accidentalmente un <em>bug<\/em> en alg\u00fan archivo del c\u00f3digo. Tu deber como l\u00edder del proyecto ser\u00e1, no solo encontrar ese fallo, sino tambi\u00e9n al culpable de introducirlo para castigarlo como se merece&#8230; o, al menos, pedirle que lo solucione.<\/p>\n\n\n\n<p>Para ello, puedes usar: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git blame archivo<\/pre>\n\n\n\n<p>Esto nos dir\u00e1 qui\u00e9n hizo qu\u00e9 en ese archivo. Pero si quieres afinar aun mas la b\u00fasqueda para detectar qui\u00e9n introdujo un cambio en una linea especifica, puede hacerlo con: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git blame archivo -L11,14 <\/pre>\n\n\n\n<p>Donde el 11 es la linea desde la que queremos comenzar a buscar, hasta llegar a la linea 14 del archivo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">10- Busca palabras mediante <em>grep<\/em><\/h4>\n\n\n\n<p>Si vienes del mundo Linux, seguramente conocer\u00e1s <em>grep <\/em>y lo que hace, pero sino es as\u00ed, debes saber que, b\u00e1sicamente, es una forma de buscar una palabra o cadena en un archivo o directorio. Este comando tambi\u00e9n est\u00e1 disponible en Git (si, aun en su versi\u00f3n para Windows) y te permitir\u00e1 encontrar cualquier cosa en tu \u00e1rbol de trabajo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git grep busqueda<\/pre>\n\n\n\n<p>Si quieres saber en detalle en que archivo y en que linea esta lo que buscas, solo debes agregar lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git grep -n busqueda<\/pre>\n\n\n\n<p>Y si nos ponemos un poco m\u00e1s mani\u00e1ticos, podemos contar la cantidad de veces que aparece el t\u00e9rmino que estamos buscando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git grep -c busqueda<\/pre>\n\n\n\n<p><strong>NOTA: <\/strong> Ten en cuenta que este comando es sensible a may\u00fasculas y min\u00fasculas.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">11- <em>Recolectar<\/em> cambios con Cherry-Pick<\/h4>\n\n\n\n<p>Esta t\u00e9cnica consiste en poder traer al estado actual de tu rama, commits que hayas hecho en otras ramas sin necesidad de mergear todo el <em>branch<\/em>.<\/p>\n\n\n\n<p>Para usar este comando, deber\u00e1s conocer de antemano el <em>hash <\/em>del commit que quieras traer, lo cual puedes obtener f\u00e1cilmente con <em>git log<\/em>, por ejemplo.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git cherry-pick d6ac679c<\/pre>\n\n\n\n<p>Para usarlo, deber\u00e1s estar parado en la rama a la que quieras <em>incrustarle <\/em>los commits. Ten en cuenta que esto es considerado como una mala pr\u00e1ctica, por lo cual, \u00fasalo con sabidur\u00eda.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">12- Traer cambios desde un repositorio y enviarlos a otro<\/h4>\n\n\n\n<p><amp-fit-text layout=\"fixed-height\" min-font-size=\"6\" max-font-size=\"72\" height=\"80\">Si alguna vez has hecho un fork a un repositorio, seguramente conoceras este tip. Basicamente, Git nos permite tener varios <em>remotes<\/em> en nuestro repositorio local, por lo cual, puedes configurar uno como origen de tus datos (en el caso de un fork, este seria el repo original desde el cual obtienes los datos) y otro como destino de tus cambios (en nuestro ejemplo, nuestro propio repositorio remoto obtenido despu\u00e9s de ejecutar el comando <em>git clone<\/em> y <em>git push<\/em>).<\/amp-fit-text><\/p>\n\n\n\n<p>Para agregar un nuevo remoto como origen de nuestros datos, debemos hacer lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git remote add upstream https:\/\/github.com\/yo\/miRepo.git<\/pre>\n\n\n\n<p>donde <em>upstream <\/em>ser\u00e1 el nombre de ese origen (puedes ponerle el nombre que quieras). Entonces, cuando queramos <em>pullear <\/em>los cambios del repositorio remoto hacia nuestra rama master, solo tendremos que hacer<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git pull upstream master<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">13- Poner <em>tags <\/em>a tus commits<\/h4>\n\n\n\n<p>Agregar etiquetas a tus commits te permitir\u00e1 tener un c\u00f3digo mejor organizado, adem\u00e1s de que muchas herramientas de <em>Integraci\u00f3n Continua<\/em> las usan para determinar que mandar a producci\u00f3n. Git nos ofrece una forma muy simple de crear <em>tags <\/em>y subirlas a nuestro repositorio remoto.<\/p>\n\n\n\n<p>Para crear un tag, hacemos lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git tag -a 1.0Alpha -m \"Alpha version\" fb9b1c2<\/pre>\n\n\n\n<p>Donde \u00ab1.0Alpha\u00bb es nuestro tag,  \u00abAlpha version\u00bb el mensaje que pondremos para tener m\u00e1s detalles sobre nuestra etiqueta (tal como lo hacemos con los commits) y fb9b1c2 el hash del commit al que queremos <em>taggear<\/em>.<\/p>\n\n\n\n<p>Para pushear nuestro tag, solo debemos hacer:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git push origin --tags<\/pre>\n\n\n\n<p>Para ver los tags que hemos creado:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git tag<\/pre>\n\n\n\n<p>O bien:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> git show-refs --tags <\/pre>\n\n\n\n<p>Y, finalmente, si queremos eliminar alg\u00fan tag, primero lo haremos en nuestro repositorio local:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git tag -d nombre-del-tag<\/pre>\n\n\n\n<p>Y luego en nuestro remoto:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git push origin :refs\/tags\/nombre-del-tag<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">14- Ver un gr\u00e1fico de tus ramas en Git Bash<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"779\" height=\"370\" data-src=\"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/fX2ZFsf.png\" alt=\"sourcetree gitkraken bitbucket gitflow git scm git diff\" class=\"wp-image-111 lazyload\" data-srcset=\"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/fX2ZFsf.png 779w, https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/fX2ZFsf-300x142.png 300w, https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/fX2ZFsf-768x365.png 768w, https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/fX2ZFsf-450x214.png 450w\" data-sizes=\"(max-width: 779px) 100vw, 779px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 779px; --smush-placeholder-aspect-ratio: 779\/370;\" \/><\/figure>\n\n\n\n<p>Cuando estamos trabajando en un repositorio de gran tama\u00f1o en el que participan varios desarrolladores, analizar el flujo de trabajo que hemos utilizado y la forma en la que nuestros <em>branches <\/em>se crean y fusionan puede ser un dolor de cabeza.<\/p>\n\n\n\n<p>Por suerte, Git cuenta con una serie de herramientas para poder estudiar esto de un forma m\u00e1s visual. Si en tu consola ejecutas:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git log --all --graph<\/pre>\n\n\n\n<p>Ver\u00e1s una serie de lineas de colores que indicaran el flujo de nuestros branches a lo largo de la historia de nuestro repositorio.<\/p>\n\n\n\n<p>Si queremos ver m\u00e1s detalles, podemos hacer:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git log --all --graph --decorate --oneline<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">15- GITK: La herramienta visual de GIT<\/h4>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"800\" height=\"579\" data-src=\"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/Q6oU3.png\" alt=\"git comandos instalar git github espa\u00f1ol git bash git project sourcetree gitlab git visual studio 2017 git youtube bonobo git jenkins git comando git clone comando git clone\" class=\"wp-image-113 lazyload\" data-srcset=\"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/Q6oU3.png 800w, https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/Q6oU3-300x217.png 300w, https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/Q6oU3-768x556.png 768w, https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/Q6oU3-450x326.png 450w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/579;\" \/><\/figure>\n\n\n\n<p>Otra de las herramientas visuales con las que cuenta Git para poder analizar nuestro <em>workflow <\/em>es GitK. Gracias a esta sencilla interfaz, podremos ver informaci\u00f3n super detallada sobre nuestros commits y el comportamiento de cada colaborador.<\/p>\n\n\n\n<p>Para abrir GitK, solo debes ejecutar lo siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gitk<\/pre>\n\n\n\n<p>Si est\u00e1s trabajando en Debian o alguna otra distribuci\u00f3n de Linux, es posible que GitK no est\u00e9 instalado por defecto. De ser as\u00ed, solo tendr\u00e1s que instalarlo con <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt-get install gitk<\/pre>\n\n\n\n<p>Y listo. Todo muy sencillo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">16- Ponerle <em>alias <\/em>a tus comandos<\/h4>\n\n\n\n<p>Git tiene muchos comandos, algunos de los cuales pueden ser muy largos y dif\u00edciles de recordar, sobre todo si los <em>customizamos <\/em>con par\u00e1metros. <\/p>\n\n\n\n<p>Afortunadamente, podemos ponerles nuestros propios alias y as\u00ed simplificar nuestra tarea diaria.<\/p>\n\n\n\n<p>Tomemos el ejemplo del comando que vimos en el punto 14, <em>git log &#8211;all &#8211;graph &#8211;decorate &#8211;oneline<\/em> al cual le pondremos el alias <em>grapho<\/em>. Para lograr esto, s\u00f3lo tenemos que hacer:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git config --global alias.grapho \"<em>git log --all --graph --decorate --oneline<\/em>\" <\/pre>\n\n\n\n<p>Ahora podremos llamarlo solo con ejecutar:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git grapho<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">17- Ver la documentaci\u00f3n de cada comando de Git<\/h4>\n\n\n\n<p>Hemos visto varios comandos muy \u00fatiles, pero ciertamente GIT tiene muchos m\u00e1s. Una forma sencilla y r\u00e1pida de ver qu\u00e9 hace cada comando es con<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git comando --help<\/pre>\n\n\n\n<p>De esa forma accederemos a la documentaci\u00f3n oficial de esa instrucci\u00f3n en particular.<\/p>\n\n\n\n<p>Ya sea que uses <strong>GitHub<\/strong>, <strong>GitLab <\/strong>o <strong>Bitbucket<\/strong>, estoy seguro de que esta lista te ser\u00e1 de utilidad para tu trabajo. Si conoces m\u00e1s comandos que consideres que deber\u00edan agregarse, no dudes en dejarlos en los comentarios.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Hoy en d\u00eda, el uso de un controlador de versiones de nuestro c\u00f3digo es un punto obligado en los skills de cualquier desarrollador. En ese sentido, Git es el m\u00e1s popular y el m\u00e1s solicitado por las empresas a la hora de enumerar los conocimientos b\u00e1sicos que esperan de un developer. Muchos programadores se valen<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":3,"featured_media":76,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[4,60,61],"class_list":["post-71","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categoria","tag-developer","tag-git","tag-gitflow"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>1\ufe0f\u20e3 GIT: 17 trucos y comandos para que lo domines como un profesional - Full Stack Blogger<\/title>\n<meta name=\"description\" content=\"Mejora tu GitFlow con estos comandos y conviertete en un profesional. SI eres desarrollador o DevOp, necesitas leer este art\u00edculo. \u2764\ufe0f\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"1\ufe0f\u20e3 GIT: 17 trucos y comandos para que lo domines como un profesional - Full Stack Blogger\" \/>\n<meta property=\"og:description\" content=\"Mejora tu GitFlow con estos comandos y conviertete en un profesional. SI eres desarrollador o DevOp, necesitas leer este art\u00edculo. \u2764\ufe0f\" \/>\n<meta property=\"og:url\" content=\"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/\" \/>\n<meta property=\"og:site_name\" content=\"Full Stack Blogger\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-16T15:25:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-01-24T17:43:34+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/git_destacada-1024x426-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Agustin Ducca Pantaleon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Agustin Ducca Pantaleon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/\"},\"author\":{\"name\":\"Agustin Ducca Pantaleon\",\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/#\\\/schema\\\/person\\\/a9cb44280de0040e5c0ed46bf28cb57c\"},\"headline\":\"GIT: 17 trucos y comandos para que lo domines como un profesional\",\"datePublished\":\"2020-01-16T15:25:57+00:00\",\"dateModified\":\"2020-01-24T17:43:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/\"},\"wordCount\":1939,\"commentCount\":3,\"image\":{\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/git_destacada-1024x426-1.png\",\"keywords\":[\"developer\",\"git\",\"gitflow\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/\",\"url\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/\",\"name\":\"1\ufe0f\u20e3 GIT: 17 trucos y comandos para que lo domines como un profesional - Full Stack Blogger\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/git_destacada-1024x426-1.png\",\"datePublished\":\"2020-01-16T15:25:57+00:00\",\"dateModified\":\"2020-01-24T17:43:34+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/#\\\/schema\\\/person\\\/a9cb44280de0040e5c0ed46bf28cb57c\"},\"description\":\"Mejora tu GitFlow con estos comandos y conviertete en un profesional. SI eres desarrollador o DevOp, necesitas leer este art\u00edculo. \u2764\ufe0f\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\\\/#primaryimage\",\"url\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/git_destacada-1024x426-1.png\",\"contentUrl\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/git_destacada-1024x426-1.png\",\"width\":1024,\"height\":426,\"caption\":\"git gitflow git craken\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/\",\"name\":\"Full Stack Blogger\",\"description\":\"Mi vida entre l\u00edneas de c\u00f3digo\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/#\\\/schema\\\/person\\\/a9cb44280de0040e5c0ed46bf28cb57c\",\"name\":\"Agustin Ducca Pantaleon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ffdafc884a1ebae3226babd7365e54f65e5cd3ce52f29f315bf1f837fa84e80b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ffdafc884a1ebae3226babd7365e54f65e5cd3ce52f29f315bf1f837fa84e80b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ffdafc884a1ebae3226babd7365e54f65e5cd3ce52f29f315bf1f837fa84e80b?s=96&d=mm&r=g\",\"caption\":\"Agustin Ducca Pantaleon\"},\"url\":\"https:\\\/\\\/agustinducca.com\\\/blog\\\/author\\\/aducca\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"1\ufe0f\u20e3 GIT: 17 trucos y comandos para que lo domines como un profesional - Full Stack Blogger","description":"Mejora tu GitFlow con estos comandos y conviertete en un profesional. SI eres desarrollador o DevOp, necesitas leer este art\u00edculo. \u2764\ufe0f","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/","og_locale":"es_ES","og_type":"article","og_title":"1\ufe0f\u20e3 GIT: 17 trucos y comandos para que lo domines como un profesional - Full Stack Blogger","og_description":"Mejora tu GitFlow con estos comandos y conviertete en un profesional. SI eres desarrollador o DevOp, necesitas leer este art\u00edculo. \u2764\ufe0f","og_url":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/","og_site_name":"Full Stack Blogger","article_published_time":"2020-01-16T15:25:57+00:00","article_modified_time":"2020-01-24T17:43:34+00:00","og_image":[{"width":1024,"height":426,"url":"http:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/git_destacada-1024x426-1.png","type":"image\/png"}],"author":"Agustin Ducca Pantaleon","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Agustin Ducca Pantaleon","Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/#article","isPartOf":{"@id":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/"},"author":{"name":"Agustin Ducca Pantaleon","@id":"https:\/\/agustinducca.com\/blog\/#\/schema\/person\/a9cb44280de0040e5c0ed46bf28cb57c"},"headline":"GIT: 17 trucos y comandos para que lo domines como un profesional","datePublished":"2020-01-16T15:25:57+00:00","dateModified":"2020-01-24T17:43:34+00:00","mainEntityOfPage":{"@id":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/"},"wordCount":1939,"commentCount":3,"image":{"@id":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/#primaryimage"},"thumbnailUrl":"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/git_destacada-1024x426-1.png","keywords":["developer","git","gitflow"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/","url":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/","name":"1\ufe0f\u20e3 GIT: 17 trucos y comandos para que lo domines como un profesional - Full Stack Blogger","isPartOf":{"@id":"https:\/\/agustinducca.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/#primaryimage"},"image":{"@id":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/#primaryimage"},"thumbnailUrl":"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/git_destacada-1024x426-1.png","datePublished":"2020-01-16T15:25:57+00:00","dateModified":"2020-01-24T17:43:34+00:00","author":{"@id":"https:\/\/agustinducca.com\/blog\/#\/schema\/person\/a9cb44280de0040e5c0ed46bf28cb57c"},"description":"Mejora tu GitFlow con estos comandos y conviertete en un profesional. SI eres desarrollador o DevOp, necesitas leer este art\u00edculo. \u2764\ufe0f","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/agustinducca.com\/blog\/git-17-trucos-y-comandos-para-que-lo-domines-como-un-profesional\/#primaryimage","url":"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/git_destacada-1024x426-1.png","contentUrl":"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/git_destacada-1024x426-1.png","width":1024,"height":426,"caption":"git gitflow git craken"},{"@type":"WebSite","@id":"https:\/\/agustinducca.com\/blog\/#website","url":"https:\/\/agustinducca.com\/blog\/","name":"Full Stack Blogger","description":"Mi vida entre l\u00edneas de c\u00f3digo","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/agustinducca.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/agustinducca.com\/blog\/#\/schema\/person\/a9cb44280de0040e5c0ed46bf28cb57c","name":"Agustin Ducca Pantaleon","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/ffdafc884a1ebae3226babd7365e54f65e5cd3ce52f29f315bf1f837fa84e80b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ffdafc884a1ebae3226babd7365e54f65e5cd3ce52f29f315bf1f837fa84e80b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ffdafc884a1ebae3226babd7365e54f65e5cd3ce52f29f315bf1f837fa84e80b?s=96&d=mm&r=g","caption":"Agustin Ducca Pantaleon"},"url":"https:\/\/agustinducca.com\/blog\/author\/aducca\/"}]}},"featured_image_src":"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/git_destacada-1024x426-1.png","featured_image_src_square":"https:\/\/agustinducca.com\/blog\/wp-content\/uploads\/2020\/01\/git_destacada-1024x426-1.png","author_info":{"display_name":"Agustin Ducca Pantaleon","author_link":"https:\/\/agustinducca.com\/blog\/author\/aducca\/"},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":51,"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":169,"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/posts\/71\/revisions\/169"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/media\/76"}],"wp:attachment":[{"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/media?parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/categories?post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agustinducca.com\/blog\/wp-json\/wp\/v2\/tags?post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}