{"id":9431,"date":"2019-12-11T22:37:30","date_gmt":"2019-12-11T21:37:30","guid":{"rendered":"https:\/\/blog.hostinger.io\/com-ar-tutoriales\/?p=9431"},"modified":"2022-12-19T17:46:51","modified_gmt":"2022-12-19T16:46:51","slug":"como-usar-git-hooks","status":"publish","type":"post","link":"\/ar\/tutoriales\/como-usar-git-hooks","title":{"rendered":"\u00bfC\u00f3mo usar Git Hooks?"},"content":{"rendered":"<p>Git se ha convertido en algo esencial para que los desarrolladores de software, los programadores y los ingenieros realicen un seguimiento de los cambios realizados en sus proyectos para una colaboraci&oacute;n m&aacute;s eficiente.<\/p><p>Los Git Hooks (ganchos de&nbsp;Git) son una de las muchas caracter&iacute;sticas integradas de Git. Permiten a los usuarios automatizar acciones personalizadas cada vez que se produce un evento determinado.<\/p><p>Algunas de las ventajas de implementar Git Hooks son los flujos de trabajo de integraci&oacute;n continua, el mantenimiento de una pol&iacute;tica de confirmaciones y la prevenci&oacute;n de acciones que no cumplan con las normas definidas.<\/p><figure class=\"wp-block-image size-large\"><a href=\"https:\/\/assets.hostinger.com\/content\/tutorials\/pdf\/Speed-Up-Your-Website-ES.pdf\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/blog.hostinger.io\/com-ar-tutoriales\/wp-content\/uploads\/sites\/38\/2022\/12\/eBook-Speed-Up-your-website-ES-1024x283.png\" alt=\"\" class=\"wp-image-25983\" srcset=\"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/12\/eBook-Speed-Up-your-website-ES.png 1024w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/12\/eBook-Speed-Up-your-website-ES-300x83.png 300w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/12\/eBook-Speed-Up-your-website-ES-150x41.png 150w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/12\/eBook-Speed-Up-your-website-ES-768x212.png 768w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/12\/eBook-Speed-Up-your-website-ES-1536x425.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>En este art&iacute;culo, aprender&aacute;s m&aacute;s sobre qu&eacute; son los Git Hooks y c&oacute;mo utilizarlos tanto en el lado del cliente como en el del servidor. Tambi&eacute;n proporcionaremos algunos ejemplos de Git Hooks para que los implementes en tu propio proyecto.<\/p><h2 class=\"wp-block-heading\" id=\"h-que-es-git\">&iquest;Qu&eacute; es Git?<\/h2><p>Antes de abordar el tema de c&oacute;mo funcionan los Git Hooks y c&oacute;mo usarlos, repasemos r&aacute;pidamente qu&eacute; es Git.<\/p><p>Git es una aplicaci&oacute;n de control de versiones de c&oacute;digo abierto. Con &eacute;l, los usuarios pueden supervisar y hacer un seguimiento detallado del desarrollo del software. Puedes crear ramas de desarrollo, registrar los cambios y tener un control absoluto sobre las versiones de los archivos de tu proyecto.<\/p><p>Git es muy popular entre los desarrolladores de software, y la mayor&iacute;a de los proyectos de c&oacute;digo abierto lo utilizan.<\/p><h2 class=\"wp-block-heading\" id=\"h-que-son-los-git-hooks\">&iquest;Qu&eacute; son los Git Hooks?<\/h2><p>Los Git Hooks son scripts que se ejecutan autom&aacute;ticamente antes o despu&eacute;s de ejecutar comandos Git como Commit y Push. Con los scripts de Git Hooks, los usuarios pueden personalizar el comportamiento interno de Git automatizando acciones espec&iacute;ficas a nivel de programas y deployment.<\/p><p>Git incluye ejemplos de hooks en cualquier repositorio Git. Sin embargo, sitios como <a href=\"\/ar\/tutoriales\/que-es-github\">GitHub<\/a> o GitLab no permiten su uso en primera instancia. Por ello, los Git Hooks se utilizan principalmente en instancias locales o privadas.<\/p><p>Ten en cuenta que el sistema debe tener permisos de ejecuci&oacute;n para ejecutar un determinado hook o gancho.<\/p><h2 class=\"wp-block-heading\" id=\"h-como-usar-los-git-hooks\">C&oacute;mo usar los Git Hooks<\/h2><p>Los Hooks se almacenan en la carpeta <strong>.git\/hooks\/ <\/strong>del directorio de cada proyecto. Con la funci&oacute;n de <a href=\"https:\/\/git-scm.com\/docs\/git-init\" target=\"_blank\" rel=\"noreferrer noopener\">directorios de plantillas de Git<\/a>, los usuarios pueden instalarlos autom&aacute;ticamente. Siempre que uses &ldquo;git init&rdquo; o &ldquo;git clone&rdquo;, todos los archivos y directorios del directorio de plantillas se copiar&aacute;n en el nuevo repositorio Git vac&iacute;o.<\/p><p>En&nbsp;<strong>.git\/hooks\/<\/strong> encontraremos una serie de hooks de ejemplo, tales como <strong>commit-msg.sample<\/strong>,&nbsp;<strong>post-update.sample<\/strong>, y&nbsp;<strong>pre-commit.sample<\/strong>, que son un buen punto de partida.<\/p><p>La instalaci&oacute;n de los hooks implica crear un archivo ejecutable y guardarlo en el directorio <strong>.git\/hooks\/<\/strong>.<\/p><h3 class=\"wp-block-heading\">C&oacute;mo utilizar los Hooks locales<\/h3><p>Los hooks locales o del lado del cliente se activan por eventos que se ejecutan en el ordenador local, como cuando confirmas o fusionas un proyecto.<\/p><p>En general, hay tres tipos de Hooks locales o del lado del cliente:<\/p><ul class=\"wp-block-list\">\n<li><strong><strong>Committing-workflow hooks<\/strong>.<\/strong> Son scripts de gancho relacionados con el proceso de confirmaci&oacute;n &ndash; <strong>precommit, prepare-commit-msg, commit-msg, <\/strong>y <strong>post-commit<\/strong>.<\/li>\n\n\n\n<li><strong><strong>Email workflow hooks<\/strong>. <\/strong>Son scripts gancho para proyectos con un flujo de trabajo basado en el correo electr&oacute;nico que utiliza el comando &ldquo;git am&rdquo;. Esto incluye <strong>applypatch-msg, pre-applypatch <\/strong>y<strong> post-applypatch<\/strong>.<\/li>\n\n\n\n<li><strong>Otros.<\/strong> Incluyen otros scripts gancho locales como <strong>pre-rebase, post-reescritura, post-control, post-fusi&oacute;n, pre-empuje <\/strong>y<strong> pre-auto-gc<\/strong>.<\/li>\n<\/ul><p>Para instalar un git hook:<\/p><ol class=\"wp-block-list\">\n<li>Abre el directorio <strong>.git\/hooks\/<\/strong> de tu repositorio.<\/li>\n\n\n\n<li>Busca el archivo de ejemplo del gancho que quieres utilizar.<\/li>\n\n\n\n<li>Elimina &ldquo;.sample&rdquo; del nombre del archivo del hook. Por ejemplo, &ldquo;pre-commit.sample&rdquo; debe cambiarse por &ldquo;pre-commit&rdquo;.<\/li>\n\n\n\n<li>Haz que el gancho sea ejecutable cambiando sus permisos mediante el siguiente comando Git: <code><code data-enlighter-language=\"generic\" class=\"EnlighterJSRAW\">chmod +x [hook-name] <\/code><\/code><\/li>\n\n\n\n<li>Elige qu&eacute; lenguaje de scripting quieres utilizar para el hook. Eres libre de usar cualquier lenguaje de scripting, incluyendo Python, Bash o shell.<\/li>\n\n\n\n<li>Abre el archivo hook en tu programa editor de c&oacute;digo y define el lenguaje de scripting que hayas elegido. Incluye la ruta del int&eacute;rprete en el comando.<\/li>\n<\/ol><p>Si quieres utilizar Python:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/usr\/bin python<\/pre><p>Si quieres utilizar&nbsp;<a href=\"\/ar\/tutoriales\/bash-script-linux\">Bash<\/a>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash<\/pre><p>Si quieres utilizar shell:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/sh<\/pre><ol class=\"wp-block-list\" start=\"7\">\n<li>Escribe la secuencia de comandos del hook en el lenguaje de programaci&oacute;n elegido.<\/li>\n<\/ol><p>Ten en cuenta que para que un gancho se ejecute correctamente, el valor de salida debe ser 0. Para que falle, el valor de salida debe ser igual a 1. Si quieres incluir varias condiciones, deben estar presentes en el mismo archivo.<\/p><p>Tambi&eacute;n es importante recordar que los scripts de hook no se comprueban en el control de versiones de Git por defecto. En otras palabras, no pueden ser confirmados. Si se elimina el directorio local de hooks, Git eliminar&aacute; todos los hooks o ganchos y sus versiones anteriores del proyecto.<\/p><p>Como soluci&oacute;n, puedes a&ntilde;adir un enlace simb&oacute;lico al repositorio de Git. Como resultado, los scripts de hooks habilitados pueden ser confirmados en el control de versiones. A continuaci&oacute;n te explicamos c&oacute;mo hacerlo:<\/p><ol class=\"wp-block-list\">\n<li>Crea un nuevo directorio Git llamado &ldquo;hooks&rdquo; en tu proyecto principal.<\/li>\n\n\n\n<li>Copia y pega el archivo hook de<strong> .git\/hooks\/<\/strong> en el nuevo directorio &ldquo;hooks&rdquo;. Si todav&iacute;a es un archivo de muestra, hazlo ejecutable eliminando &ldquo;.sample&rdquo; del nombre del archivo.<\/li>\n\n\n\n<li>Navega hasta <strong>.git\/hooks\/<\/strong> y crea un nuevo archivo vac&iacute;o con el mismo nombre.<\/li>\n\n\n\n<li>Crea un nuevo enlace simb&oacute;lico introduciendo el siguiente comando en Git:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ln -s -f ..\/hooks\/[hook-name] .git\/hooks\/[hook-name]<\/pre><p>Adem&aacute;s, si por alguna raz&oacute;n quieres evitar un gancho activo, a&ntilde;ade &ldquo;-no-verify&rdquo; al comando correspondiente. Por ejemplo, introduce el siguiente comando para omitir los ganchos de confirmaci&oacute;n:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git commit --no-verify -m [commit message]<\/pre><p><strong>Uso de los Pre-Hooks<\/strong><\/p><p>Un pre-hook se ejecuta antes de un evento en particular en el repositorio Git.<\/p><p>El hook de pre-commit, por ejemplo, puede utilizarse para aplicar una pol&iacute;tica de confirmaci&oacute;n y evitar confirmaciones incorrectas. Si el gancho sale con un estado distinto de cero, Git lo abortar&aacute;.<\/p><p>Aqu&iacute; tienes algunos ejemplos de ganchos previos locales:<\/p><ul class=\"wp-block-list\">\n<li><strong>pre-applypatch.<\/strong> Comprueba el estado del &aacute;rbol de trabajo antes de confirmar los cambios. Se llama despu&eacute;s de aplicar una nueva versi&oacute;n, pero antes de confirmar los cambios.<\/li>\n\n\n\n<li><strong>pre-commit.<\/strong> Inspecciona el contenido de la confirmaci&oacute;n, como el estilo del c&oacute;digo o los espacios en blanco finales. Se ejecuta antes de que se escriba el mensaje de confirmaci&oacute;n.<\/li>\n\n\n\n<li><strong>pre-merge-commit<\/strong>. Llama a una confirmaci&oacute;n de fusi&oacute;n autom&aacute;tica invocada por &ldquo;git merge&rdquo;. Se llama despu&eacute;s de la fusi&oacute;n, pero antes de obtener el archivo del mensaje de confirmaci&oacute;n propuesto.<\/li>\n\n\n\n<li><strong>pre-push.<\/strong> V&aacute;lida un conjunto de actualizaciones de ref antes de que se produzca un push. Se ejecuta durante &ldquo;git push&rdquo; despu&eacute;s de que las refs remotas se hayan actualizado, pero antes de que se transfieran los nuevos cambios.<\/li>\n\n\n\n<li><strong>pre-rebase.<\/strong> Impide el rebasado de cualquier confirmaci&oacute;n de Git que ya haya sido empujada. Se llama antes de que se produzca el &ldquo;git rebase&rdquo;.<\/li>\n<\/ul><p>Algunos de estos ganchos pueden parecer similares entre s&iacute;, como los scripts pre-push y pre-commit. Es importante saber qu&eacute; gancho satisfar&aacute; mejor tus necesidades.<\/p><p>El script pre-commit se ejecuta antes de que escribas un mensaje de confirmaci&oacute;n, mientras que pre-push se ejecuta antes de que el nuevo contenido se suba a un repositorio remoto. Funcionan en diferentes puntos del ciclo del proyecto, pero puedes utilizar ambos para evitar confirmaciones y empujes incorrectos, asegurando un mejor flujo de trabajo.<\/p><p><strong>Utilizar los post-ganchos<\/strong><\/p><p>Git ejecuta un post-gancho despu&eacute;s de que se produzca un determinado evento en el repositorio.<\/p><p>Los post-ganchos se utilizan a menudo para automatizar las respuestas a otras acciones, como el env&iacute;o de correos electr&oacute;nicos de notificaci&oacute;n cuando se a&ntilde;ade un nuevo commit de Git.<\/p><p>Estos son algunos ejemplos de post-ganchos locales:<\/p><ul class=\"wp-block-list\">\n<li><strong>post-applypatch. <\/strong>Notifica a un grupo o al autor del parche despu&eacute;s de aplicarlo. Se llama despu&eacute;s de aplicar y confirmar una nueva versi&oacute;n.<\/li>\n\n\n\n<li><strong>post-commit<\/strong>. Crea notificaciones despu&eacute;s de que el proceso de confirmaci&oacute;n haya terminado.<\/li>\n\n\n\n<li><strong>post-checkout.<\/strong> Verifica las condiciones, muestra las diferencias y establece un directorio de trabajo adecuado para el entorno del proyecto. Se ejecuta despu&eacute;s de que se complete un &ldquo;git checkout&rdquo; con &eacute;xito.<\/li>\n\n\n\n<li><strong><strong>post-merge.<\/strong> <\/strong>Guarda, aplica los permisos y restaura otros datos no rastreados en el &aacute;rbol de trabajo. Se ejecuta despu&eacute;s de un comando &ldquo;git merge&rdquo; exitoso.<\/li>\n\n\n\n<li><strong>post-rewrite.<\/strong> Se puede utilizar de forma similar a los ganchos &ldquo;post-checkout&rdquo; y &ldquo;post-merge&rdquo;. Se ejecuta mediante comandos Git que reemplazan confirmaciones, como &ldquo;git rebase&rdquo;.<\/li>\n<\/ul><h3 class=\"wp-block-heading\">C&oacute;mo utilizar los ganchos del lado del servidor<\/h3><p>Los scripts gancho del lado del servidor se ejecutan en repositorios o servidores remotos que reciben pushes de un equipo local. Pueden ejecutarse antes o despu&eacute;s de los pushes del servidor. Los pre-hooks del lado del servidor, por ejemplo, pueden interrumpir cualquier Git push que salga con un mensaje distinto de cero.<\/p><p>Aqu&iacute; tienes algunos ejemplos de hooks del lado del servidor:<\/p><ul class=\"wp-block-list\">\n<li><strong>pre-receive<\/strong>. Enumera las referencias que se est&aacute;n enviando al repositorio remoto. Se puede utilizar para asegurar que ninguna de las referencias actualizadas sea no-r&aacute;pida o para hacer un control de acceso de todas las refs y archivos que se modifican con el Git push.<\/li>\n\n\n\n<li><strong>update.<\/strong> Tiene una finalidad similar a la de pre-recibir. La &uacute;nica diferencia es que la actualizaci&oacute;n se ejecuta una vez para cada rama, mientras que la pre-recepci&oacute;n puede ejecutarse una vez para varias ramas.<\/li>\n\n\n\n<li><strong>post-receive.&nbsp;<\/strong> Env&iacute;a un correo electr&oacute;nico a una lista, notifica a un servidor de integraci&oacute;n continua o actualiza un sistema de seguimiento de tickets. Se ejecuta en el servidor remoto durante el empuje despu&eacute;s de que se hayan actualizado todas las referencias.<\/li>\n\n\n\n<li><strong>post-update.&nbsp;<\/strong> Implementa las notificaciones para las referencias empujadas. Funciona de forma similar a la post-recepci&oacute;n, la &uacute;nica diferencia es que no recibe los valores de las referencias antiguas o nuevas. Se ejecuta una vez despu&eacute;s de que todas las referencias hayan sido enviadas al servidor remoto.<\/li>\n<\/ul><p>Los pasos para instalar los ganchos del lado del servidor son los mismos que los del lado del cliente. La &uacute;nica diferencia es que debes colocar los scripts en el directorio <strong>.git\/hooks<\/strong> situado en el servidor remoto en lugar de en el directorio local.<\/p><figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"768\" height=\"521\" src=\"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/11\/git-hooks-es.jpg\" alt=\"\" class=\"wp-image-25719\" srcset=\"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/11\/git-hooks-es.jpg 768w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/11\/git-hooks-es-300x204.jpg 300w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2022\/11\/git-hooks-es-150x102.jpg 150w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure><h2 class=\"wp-block-heading\" id=\"h-ejemplos-de-git-hooks\">Ejemplos de Git Hooks<\/h2><p>Existen muchos casos de uso para los scripts de hook. Echa un vistazo a los siguientes ejemplos.<\/p><h3 class=\"wp-block-heading\" id=\"h-mostrar-informacion-sobre-una-accion-commit\">Mostrar informaci&oacute;n sobre una acci&oacute;n commit<\/h3><p>Este ejemplo muestra la informaci&oacute;n de una acci&oacute;n commit. Este hook se llama despu&eacute;s de recibir el mensaje de confirmaci&oacute;n por defecto y antes de que se abra el editor de mensajes de confirmaci&oacute;n<\/p><p>Crea un archivo llamado prepare-commit-msg en la carpeta <strong>.git\/hooks\/<\/strong> de tu repositorio. Luego, escribe el siguiente script:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/sh\n\nSOB=$(git config github.user)\ngrep -qs \"^$SOB\" \"$1\" || echo \". Cambio por @$SOB\" &gt;&gt; \"$1\"<\/pre><p>Luego, gu&aacute;rdalo. Y establece los permisos de ejecuci&oacute;n para el archivo.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">:~$ chmod +x prepare-commit-msg<\/pre><p>Con este simple Hook, al realizar una acci&oacute;n commit, instant&aacute;neamente recibir&aacute;s informaci&oacute;n relevante al respecto cuando se realice.<\/p><h3 class=\"wp-block-heading\" id=\"h-generar-documentacion-a-medida-que-se-cargan-los-cambios\">Generar documentaci&oacute;n a medida que se cargan los cambios<\/h3><p>Este Hook pre-push permite generar la documentaci&oacute;n de tu c&oacute;digo si cuentas con un generador. Cada vez que haces un cambio, la documentaci&oacute;n se ejecutar&aacute; autom&aacute;ticamente.<\/p><p>Crea un pre-push en la misma carpeta que antes y agrega el script:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n\ndoxygen Doxyfile\ngit add docs\/\ngit commit -m \"Update documentation ($(date +%F@%R))\"<\/pre><p>Guarda el archivo y, finalmente, establece el permiso de ejecuci&oacute;n.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">:~$ chmod +x pre-push<\/pre><h3 class=\"wp-block-heading\" id=\"h-buscar-y-corregir-espacios-en-blanco-en-commits\">Buscar y corregir espacios en blanco en commits<\/h3><p>Este Git Hook tipo pre-commit es bastante simple de ejecutar. Crea un archivo llamado pre-commit y agrega lo siguiente:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash -l\n.git\/hooks\/pre-commit-master-no-no\nif [[ $? == 1 ]]\nthen\nexit 1\nfi\n\n.git\/hooks\/pre-commit-debugger\n.git\/hooks\/pre-commit-trailing-spaces\n.git\/hooks\/pre-commit-images\n.git\/hooks\/pre-commit-pair<\/pre><p>Ahora se encontrar&aacute;n y corregir&aacute;n los espacios en blanco en todos los commits.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/ar\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/blog.hostinger.io\/com-ar-tutoriales\/wp-content\/uploads\/sites\/38\/2023\/02\/ES-Web-hosting_in-text-banner-1024x300.png\" alt=\"\" class=\"wp-image-29291\" srcset=\"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2023\/02\/ES-Web-hosting_in-text-banner.png 1024w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2023\/02\/ES-Web-hosting_in-text-banner-300x88.png 300w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2023\/02\/ES-Web-hosting_in-text-banner-150x44.png 150w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2023\/02\/ES-Web-hosting_in-text-banner-768x225.png 768w, https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-content\/uploads\/sites\/38\/2023\/02\/ES-Web-hosting_in-text-banner-1536x450.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusi&oacute;n<\/h2><p>Los Hooks permiten a los desarrolladores de software, programadores e ingenieros automatizar acciones personalizadas cada vez que se produce un evento espec&iacute;fico en su repositorio Git.<\/p><p>En este tutorial, hemos explorado c&oacute;mo utilizar hooks tanto locales como del lado del servidor para m&uacute;ltiples prop&oacute;sitos. Tambi&eacute;n hemos ofrecido algunos ejemplos de Git Hooks y c&oacute;mo instalarlos.<\/p><p>Esperamos que este art&iacute;culo te haya ayudado a utilizar Git en todo su potencial. Si tienes alguna pregunta o consejo, no dudes en dejarlos en la secci&oacute;n de comentarios m&aacute;s abajo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Git se ha convertido en algo esencial para que los desarrolladores de software, los programadores y los ingenieros realicen un seguimiento de los cambios realizados en sus proyectos para una colaboraci&oacute;n m&aacute;s eficiente. Los Git Hooks (ganchos de&nbsp;Git) son una de las muchas caracter&iacute;sticas integradas de Git. Permiten a los usuarios automatizar acciones personalizadas cada [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/ar\/tutoriales\/como-usar-git-hooks\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":138,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"\u00bfQu\u00e9 Son Los Git Hooks Y C\u00f3mo Empezar A Usarlos? %page%","rank_math_description":"\u00bfQuieres automatizar tareas en Git? \u00a1Usa Git Hooks! \u00a1Te decimos todo lo que necesitas saber para comenzar a usar Git Hooks en tus proyectos!","rank_math_focus_keyword":"git hooks","footnotes":""},"categories":[13068],"tags":[11620,11621],"class_list":["post-9431","post","type-post","status-publish","format-standard","hentry","category-git","tag-git-hooks","tag-tutorial-git-hooks"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-use-git-hooks","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/como-usar-git-hooks","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/git-hooks","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-use-git-hooks","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-use-git-hooks\/","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-use-git-hooks\/","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/como-usar-git-hooks","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/como-usar-git-hooks","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/como-usar-git-hooks","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-use-git-hooks","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-use-git-hooks","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-use-git-hooks","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-use-git-hooks","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/posts\/9431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/users\/138"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/comments?post=9431"}],"version-history":[{"count":8,"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/posts\/9431\/revisions"}],"predecessor-version":[{"id":26680,"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/posts\/9431\/revisions\/26680"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/media?parent=9431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/categories?post=9431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/ar\/tutoriales\/wp-json\/wp\/v2\/tags?post=9431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}