{"id":472,"date":"2023-05-17T13:00:51","date_gmt":"2023-05-17T13:00:51","guid":{"rendered":"http:\/\/jplatz.com.br\/syntax\/?p=472"},"modified":"2023-05-31T15:07:06","modified_gmt":"2023-05-31T15:07:06","slug":"git-rebase-para-trabalhar-numa-branch-dependente-de-outra-branch","status":"publish","type":"post","link":"https:\/\/jplatz.com.br\/syntax\/2023\/05\/17\/git-rebase-para-trabalhar-numa-branch-dependente-de-outra-branch\/","title":{"rendered":"GIT Rebase para Trabalhar numa Branch dependente de Outra Branch"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>-- start branch2 from branch1\ngit checkout branch1\ngit checkout -b branch2\n\n-- make changes on branch2\ngit checkout branch2\ngit add file-changed\ngit commit -m \"my commit message\"\n\n-- rebase branch2 whenever branch1 gets changed\ngit checkout branch2\ngit rebase branch1\n\n-- finally rebase branch2 after branch1 was merged into master\ngit checkout master\ngit pull origin master\ngit checkout branch2\ngit rebase --onto master branch1 branch2<\/code><\/pre>\n\n\n\n<p>Trabalhando com as diversas t\u00e9cnicas modernas de desenvolvimento de sistemas como <strong>CI\/CD<\/strong>, <strong>CleanCode<\/strong>, <strong>PMF<\/strong> entre outras os <strong>Web Devs<\/strong> frequentemente enfrentam o dilema de fragmentar ou n\u00e3o seus Pull Requests.<\/p>\n\n\n\n<p>Para quem trabalha com o <strong>GIT<\/strong> segue aqui uma receita que achei interessante registrar. A receita \u00e9 auto-explicativa n\u00e3o tem muito segredo; a sacada aqui \u00e9 a sequ\u00eancia combinada dos comandos que j\u00e1 utilizamos em atividades di\u00e1rias com o <strong>GIT<\/strong>.<\/p>\n\n\n\n<p>Quer saber se funciona mesmo?<\/p>\n\n\n\n<p>Funciona sim, finalmente tive oportunidade de testar num projeto recente e foi sucesso total, exceto pelo fato de eu ter produzido m\u00faltiplos <strong>commits<\/strong> o que n\u00e3o \u00e9 permitido no meu ambiente de <strong>CI\/CD<\/strong>.<\/p>\n\n\n\n<p>Para resolver estes <strong>commits<\/strong> m\u00faltiplos bastou fazer um <strong>squash<\/strong> para unific\u00e1-los na <strong>branch<\/strong> final.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git checkout branch2\ngit reset --soft HEAD~2\ngit commit -m \"new commit message\"\ngit pull --rebase origin master --autostash\ngit push -f<\/code><\/pre>\n\n\n\n<p>Para evitar essa complica\u00e7\u00e3o final dever\u00edamos fazer apenas <strong>commits<\/strong> complementares, assim logo ap\u00f3s criar a <strong>branch2<\/strong> a partir da <strong>branch1<\/strong> somente performar <strong>commit<\/strong> &#8212;<strong>amend<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- make your changes on branch2 then commit amend\ngit checkout -b branch2\ngit add file-changed\ngit commit --amend<\/code><\/pre>\n\n\n\n<p><strong><em>So, who&#8217;s gonna take the risk?<\/em><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trabalhando com as diversas t\u00e9cnicas modernas de desenvolvimento de sistemas como CI\/CD, CleanCode, PMF entre outras os Web Devs frequentemente enfrentam o dilema de fragmentar ou n\u00e3o seus Pull Requests. Para quem trabalha com o GIT segue aqui uma receita que achei interessante registrar. A receita \u00e9 auto-explicativa n\u00e3o tem muito segredo; a sacada aqui [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33,35],"tags":[55,134,151,150,235,237],"class_list":["post-472","post","type-post","status-publish","format-standard","hentry","category-dev-ops","category-git","tag-git","tag-git-checkout","tag-git-pull","tag-git-rebase","tag-git-reset","tag-squash"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/comments?post=472"}],"version-history":[{"count":3,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/472\/revisions"}],"predecessor-version":[{"id":477,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/472\/revisions\/477"}],"wp:attachment":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/media?parent=472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/categories?post=472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/tags?post=472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}