{"id":15625,"date":"2019-05-14T09:37:35","date_gmt":"2019-05-14T12:37:35","guid":{"rendered":"https:\/\/blog.hostinger.io\/pt-tutoriais\/?p=15625"},"modified":"2023-01-19T21:23:25","modified_gmt":"2023-01-20T00:23:25","slug":"como-usar-git-hooks","status":"publish","type":"post","link":"\/pt\/tutoriais\/como-usar-git-hooks","title":{"rendered":"Como utilizar Git hooks?"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Desenvolver uma aplica&ccedil;&atilde;o de qualidade &eacute; um processo complexo. Para fazer isso, n&oacute;s utilizamos ferramentas que s&atilde;o complementares ao processo de codifica&ccedil;&atilde;o. <\/span><\/p><p><span style=\"font-weight: 400\">Um desses processos &eacute; a automa&ccedil;&atilde;o. Isso ocorre devido &agrave; necessidade dos desenvolvedores e sysadmins (administradores de sistema) de reduzir o tempo de implementa&ccedil;&atilde;o. <\/span><a href=\"https:\/\/blog.hostinger.io\/pt-tutoriais\/tutorial-do-git-basics-introducao\/\" target=\"_blank\" rel=\"noopener\"><strong>Git <\/strong><\/a><span style=\"font-weight: 400\">&eacute; uma das ferramentas mais populares espec&iacute;ficas para essa finalidade. <\/span><\/p><p><span style=\"font-weight: 400\">E &eacute; por isso que, neste tutorial, n&oacute;s iremos mostrar para voc&ecirc; como utilizar Git Hooks para aprimorar o seu projeto de hospedagem em <\/span><a href=\"https:\/\/blog.hostinger.io\/pt-tutoriais\/para-que-serve-vps\" target=\"_blank\" rel=\"noopener\"><strong>VPS<\/strong><\/a><span style=\"font-weight: 400\">! <\/span><\/p><p><span style=\"font-weight: 400\">Git Hooks &eacute; uma utilidade interna que vai melhorar a maneira como usamos o Git. Vamos aprender exatamente como ele funciona! <\/span><\/p><figure class=\"wp-block-image size-large\"><a href=\"https:\/\/assets.hostinger.com\/content\/tutorials\/pdf\/Speed-Up-Your-Website-BR.pdf\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/blog.hostinger.io\/pt-tutoriais\/wp-content\/uploads\/sites\/26\/2022\/12\/eBook_-Speed-Up-your-website-BR-1024x283.png\" alt=\"\" class=\"wp-image-30339\" srcset=\"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2022\/12\/eBook_-Speed-Up-your-website-BR.png 1024w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2022\/12\/eBook_-Speed-Up-your-website-BR-300x83.png 300w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2022\/12\/eBook_-Speed-Up-your-website-BR-150x41.png 150w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2022\/12\/eBook_-Speed-Up-your-website-BR-768x212.png 768w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2022\/12\/eBook_-Speed-Up-your-website-BR-1536x425.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-o-que-e-git\"><b>O Que &eacute; Git? <\/b><\/h2><p><span style=\"font-weight: 400\">Antes de falarmos sobre Hooks, vamos entender rapidamente o que &eacute; Git. <\/span><\/p><p><span style=\"font-weight: 400\">Git &eacute; um software de c&oacute;digo-aberto, de controle de vers&otilde;es de uma aplica&ccedil;&atilde;o. Ao utiliz&aacute;-lo, n&oacute;s podemos monitorar o desenvolvimento de um software detalhadamente. <\/span><\/p><p><span style=\"font-weight: 400\">Git &eacute; muito popular entre desenvolvedores, e a maioria dos projetos de c&oacute;digo aberto utilizam essa ferramenta. <\/span><\/p><h2 class=\"wp-block-heading\" id=\"h-o-que-sao-git-hooks\"><b>O Que S&atilde;o Git Hooks? <\/b><\/h2><p><span style=\"font-weight: 400\">Com o Git, n&oacute;s podemos criar ramifica&ccedil;&otilde;es de desenvolvimento (chamados Git Branches), registrar modifica&ccedil;&otilde;es e ter um controle absoluto sobre as vers&otilde;es. Entretanto, &eacute; poss&iacute;vel automatizar esse processo. A automa&ccedil;&atilde;o do Git funciona no n&iacute;vel dos programas e da implementa&ccedil;&atilde;o. &Eacute; para isso que os Hooks s&atilde;o utilizados. <\/span><\/p><p><span style=\"font-weight: 400\">Git Hooks s&atilde;o shell scripts executados automaticamente antes ou depois que o Git execute um comando importante, como &ldquo;Commit&rdquo; ou &ldquo;Push&rdquo;. Para um Hook funcionar, &eacute; necess&aacute;rio que o script tenha permiss&otilde;es de execu&ccedil;&atilde;o no sistema Unix. Usando esses scripts, n&oacute;s podemos automatizar algumas a&ccedil;&otilde;es. <\/span><\/p><p><span style=\"font-weight: 400\">O Git inclui exemplos de Git Hooks assim que o reposit&oacute;rio local &eacute; iniciado. Deve ser ressaltado que sites como o <\/span><a href=\"https:\/\/blog.hostinger.io\/pt-tutoriais\/o-que-github\/\" target=\"_blank\" rel=\"noopener\"><strong>Github <\/strong><\/a><span style=\"font-weight: 400\">ou Gitlab n&atilde;o permitem o seu uso em primeira inst&acirc;ncia. &Eacute; por isso que eles s&atilde;o usados principalmente em ambientes de desenvolvimento locais ou privados. <\/span><\/p><h2 class=\"wp-block-heading\" id=\"h-como-usar-git-hooks\"><b>Como Usar Git Hooks <\/b><\/h2><p><span style=\"font-weight: 400\">Hooks s&atilde;o armazenados na pasta <\/span><b>.git\/hooks\/ <\/b><span style=\"font-weight: 400\">para cada projeto copiado, ou em um reposit&oacute;rio local rec&eacute;m criado. L&aacute;, n&oacute;s podemos encontrar uma s&eacute;rie de exemplos de Hooks, os quais s&atilde;o &oacute;timos pontos de partida. <\/span><\/p><p><span style=\"font-weight: 400\">Para ativar um Hook, &eacute; necess&aacute;rio apenas criar um arquivo e salv&aacute;-lo na pasta <\/span><b>.git\/hooks\/<\/b><span style=\"font-weight: 400\">. Entretanto, o nome do arquivo &eacute; pr&eacute;-definido pelo Git. Muitos dos Hooks que podemos usar s&atilde;o: <\/span><\/p><figure tabindex=\"0\" class=\"wp-block-table\"><table><tbody><tr><td><strong>Git Hook<\/strong><\/td><td><strong>Comando Git&nbsp;<\/strong><\/td><td><strong>Descri&ccedil;&atilde;o<\/strong><\/td><\/tr><tr><td>applypatch-msg.sample<\/td><td>git am<\/td><td>Quando uma mensagem de patch &eacute; alterada.<\/td><\/tr><tr><td>commit-msg.sample<\/td><td>git commit<\/td><td>Para definir uma mensagem de commit.<\/td><\/tr><tr><td>fsmonitor-watchman.sample<\/td><td>launch watchman<\/td><td>Para integrar watchman.<\/td><\/tr><tr><td>post-update.sample<\/td><td>git push<\/td><td>Atualizar todos os dados ap&oacute;s push.<\/td><\/tr><tr><td>pre-applypatch.sample<\/td><td>git am<\/td><td>Antes de aplicar um patch.<\/td><\/tr><tr><td>pre-commit.sample<\/td><td>git commit<\/td><td>Antes de executar um committing.<\/td><\/tr><tr><td>prepare-commit-msg.sample<\/td><td>git commit<\/td><td>Quando uma mensagem commit for definida.<\/td><\/tr><tr><td>pre-push.sample<\/td><td>git push<\/td><td>Antes de realizar um envio.<\/td><\/tr><tr><td>pre-rebase.sample<\/td><td>git rebase<\/td><td>Antes de realizar um pass ou merge.<\/td><\/tr><tr><td>pre-receive.sample<\/td><td>git push<\/td><td>Quando executamos push e obtemos data do reposit&oacute;rio remoto.<\/td><\/tr><tr><td>update.sample<\/td><td>git push<\/td><td>Ao atualizar os dados remotos com push.<\/td><\/tr><\/tbody><\/table><\/figure><p><span style=\"font-weight: 400\">Como n&oacute;s podemos ver, cada Hook &eacute; associado a um comando no Git. Com isso, podemos lev&aacute;-los em considera&ccedil;&atilde;o quando for conveniente fazer um Hook.<\/span><\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"1000\" height=\"678\" src=\"https:\/\/blog.hostinger.io\/pt-tutoriais\/wp-content\/uploads\/sites\/26\/2019\/05\/git-hooks-br.jpg\" alt=\"exemplo das notifica&ccedil;&otilde;es de pr&eacute;-commit dos git hooks\" class=\"wp-image-28373\" srcset=\"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2019\/05\/git-hooks-br.jpg 1000w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2019\/05\/git-hooks-br-300x203.jpg 300w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2019\/05\/git-hooks-br-150x102.jpg 150w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2019\/05\/git-hooks-br-768x521.jpg 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure><\/div><p class=\"has-text-align-center\"><\/p><h2 class=\"wp-block-heading\" id=\"h-exemplos-de-git-hook\"><b>Exemplos de Git Hook <\/b><\/h2><p><span style=\"font-weight: 400\">O uso de Hooks &eacute; muito amplo, mas ter conhecimento em Bash e outras linguagens ,como Python ou Ruby, s&atilde;o necess&aacute;rias para usar com todo o seu potencial. Aqui est&atilde;o alguns exemplos b&aacute;sicos: <\/span><\/p><h3 class=\"wp-block-heading\" id=\"h-informacoes-sobre-acoes-de-commit\"><b>Informa&ccedil;&otilde;es Sobre A&ccedil;&otilde;es de Commit <\/b><\/h3><p><span style=\"font-weight: 400\">Esse exemplo nos mostra a informa&ccedil;&atilde;o de uma a&ccedil;&atilde;o de Commit. Fa&ccedil;a um arquivo chamado <em>prepare-commit-msg<\/em> dentro da pasta <\/span><b>.git\/hooks\/ <\/b><span style=\"font-weight: 400\">do seu reposit&oacute;rio. Em seguida, escreva o seguinte script:<\/span><\/p><pre class=\"wp-block-preformatted\">#!\/bin\/sh\n\nSOB=$(git config github.user)\ngrep -qs \"^$SOB\" \"$1\" || echo \". Cambio por @$SOB\" &gt;&gt; \"$1\"<\/pre><p><span style=\"font-weight: 400\">Feito isso, salve e defina as permiss&otilde;es de execu&ccedil;&atilde;o para o arquivo:<\/span><\/p><pre class=\"wp-block-preformatted\">:~$ chmod +x prepare-commit-msg<\/pre><p><span style=\"font-weight: 400\">Com este simples Hook, n&oacute;s receberemos informa&ccedil;&otilde;es relevantes para todas as a&ccedil;&otilde;es de commits que forem feitas no reposit&oacute;rio, instantaneamente. <\/span><\/p><h3 class=\"wp-block-heading\" id=\"h-gerar-documentacao-antes-do-envio-das-modificacoes\"><b>Gerar documenta&ccedil;&atilde;o antes do envio das modifica&ccedil;&otilde;es <\/b><\/h3><p><span style=\"font-weight: 400\">O comando Hook pre-push permite gerar a documenta&ccedil;&atilde;o do nosso c&oacute;digo caso tenhamos um gerador instalado (no exemplo usamos o doxygen). Sempre que fizermos uma modifica&ccedil;&atilde;o, a documenta&ccedil;&atilde;o ir&aacute; ser atualizada automaticamente. <\/span><\/p><p><span style=\"font-weight: 400\">Criar um um arquivo chamado pre-push na mesma pasta de antes (.git\/hooks\/) e adicionar o script:<\/span><\/p><pre class=\"wp-block-preformatted\">#!\/bin\/bash\n\ndoxygen Doxyfile\ngit add docs\/\ngit commit -m \"Update documentation ($(date +%F@%R))\"<\/pre><p><span style=\"font-weight: 400\">Salve o arquivo na pasta e, em seguida, configure a permiss&atilde;o de execu&ccedil;&atilde;o:<\/span><\/p><pre class=\"wp-block-preformatted\">:~$ chmod +x pre-push<\/pre><h3 class=\"wp-block-heading\" id=\"h-encontre-e-corrija-os-espacos-em-branco-em-commits\"><b>Encontre e corrija os espa&ccedil;os em branco em Commits <\/b><\/h3><p><span style=\"font-weight: 400\">Esse tipo de Git Hook de pre-commit &eacute; bastante simples de fazer. Basta criar um arquivo chamado &ldquo;pre-commit&rdquo; e adicionar o seguinte script:<\/span><\/p><pre class=\"wp-block-preformatted\">#!\/bin\/bash -l\n\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><span style=\"font-weight: 400\">Agora os espa&ccedil;os em branco ir&atilde;o ser encontrados e corrigidos para todos os Commits. <\/span><\/p><figure class=\"wp-block-image size-large\"><a href=\"\/pt\/hospedagem-barata\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/blog.hostinger.io\/pt-tutoriais\/wp-content\/uploads\/sites\/26\/2023\/02\/BR-Web-hosting_in-text-banner-1024x300.png\" alt=\"\" class=\"wp-image-32927\" srcset=\"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2023\/02\/BR-Web-hosting_in-text-banner.png 1024w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2023\/02\/BR-Web-hosting_in-text-banner-300x88.png 300w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2023\/02\/BR-Web-hosting_in-text-banner-150x44.png 150w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2023\/02\/BR-Web-hosting_in-text-banner-768x225.png 768w, https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-content\/uploads\/sites\/26\/2023\/02\/BR-Web-hosting_in-text-banner-1536x450.png 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-conclusao\"><b>Conclus&atilde;o <\/b><\/h2><p><span style=\"font-weight: 400\">O Git &eacute; uma ferramenta fundamental para os desenvolvedores de hoje em dia. A cria&ccedil;&atilde;o de Git Hooks &eacute; uma &oacute;tima maneira de aprimorar essa ferramenta ainda mais. Nesse tutorial, revisamos os conceitos fundamentais da automa&ccedil;&atilde;o de processos Git com Hooks. <\/span><\/p><p><span style=\"font-weight: 400\">Fazer um script para Git Hooks pode ser complicado se voc&ecirc; n&atilde;o tiver uma base s&oacute;lida de conhecimento de linguagem de programa&ccedil;&atilde;o, como Bash, por exemplo. <\/span><\/p><p><span style=\"font-weight: 400\">Voc&ecirc; deu o primeiro passo na jornada de aprendizado para aprender como usar Git Hooks. Visite a <\/span><span style=\"font-weight: 400\">documenta&ccedil;&atilde;o oficial <\/span><span style=\"font-weight: 400\">do Git Hook e continue o seu processo de aprendizagem!<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desenvolver uma aplica&ccedil;&atilde;o de qualidade &eacute; um processo complexo. Para fazer isso, n&oacute;s utilizamos ferramentas que s&atilde;o complementares ao processo de codifica&ccedil;&atilde;o. Um desses processos &eacute; a automa&ccedil;&atilde;o. Isso ocorre devido &agrave; necessidade dos desenvolvedores e sysadmins (administradores de sistema) de reduzir o tempo de implementa&ccedil;&atilde;o. Git &eacute; uma das ferramentas mais populares espec&iacute;ficas para [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/pt\/tutoriais\/como-usar-git-hooks\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":78,"featured_media":15626,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"","rank_math_description":"Quer automatizar tarefas na implanta\u00e7\u00e3o do Git? Use Git Hooks! Saiba como come\u00e7ar a usar ganchos Git no seu projeto!","rank_math_focus_keyword":"git hooks","footnotes":""},"categories":[4902],"tags":[6536,6535],"class_list":["post-15625","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-git","tag-como-usar-git-hooks","tag-git-hooks"],"hreflangs":[{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/como-usar-git-hooks","default":1},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/como-usar-git-hooks","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/posts\/15625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/comments?post=15625"}],"version-history":[{"count":5,"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/posts\/15625\/revisions"}],"predecessor-version":[{"id":31393,"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/posts\/15625\/revisions\/31393"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/media\/15626"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/media?parent=15625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/categories?post=15625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/pt\/tutoriais\/wp-json\/wp\/v2\/tags?post=15625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}