5
respostas

Merge de somente uma revisão

Gostaria de saber, como realizar um merge de somente uma revisão, sem levar as outras revisões que tenho no branch, tendo em conta que estou trabalhando num branch criado a partir da master e também tenho um branch criado a partir do master com o nome develop e preciso levar somente uma revisão especifica para o develop.

OBS: Baixei o TortoiseGit o qual tem a opção merge e tem um campo para informar a revisão, porem quando seleciono esta opção, o merge considera a partir dessa revisão e trás todo o que esta abaixo desta revisao que é o que eu nao quero, pois somente quero levar a revisão informada.

Agradeço e fico no aguardo.

5 respostas

Oi Flávio, fiquei um pouco perdido, a revisão seria o commit? Você quer poder escolher um commit aleatório pra fazer o merge na outra branch, é isso?

Isso mesmo Wanderson, entenda-se revisão como numero (SHA-1: 3f193f0725283b339bee946d8ff1bb821151ea48) que é gerado quando eu realizo um commit. Entao a ideia seria levar apenas um commit especifico de uma branch para outra sem levar o resto de commits que se encontram na branch.

Wanderson, vou detalhar o problema:

Atualmente trabalho com 3 branches (master, release e develop) na qual a master seria minha linha de produção, release minha homologação e develop minha linha de certificação, sendo assim vamos supor que tenho 4 projetos na linha de certificação e 4 na linha de homologação, os quais possuem um tempo determinado(1 mês) para terminar suas respetivas certificações e homologações, só que terminando o mês, descubro que 1 ou 2 desses projetos não finalizou e não pode subir para a linha de homologação, mas o resto dos projetos deve subir sim ou sim para produção ou para homologação, tendo em conta que para subir para produção, eu faco um pull-request da release para a "master" e para subir os projetos para homologação, eu crio uma nova branch a partir da branch "develop" que substitui a release antiga.

No caso mencionado acima, quando eu trabalhava com "SVN", conseguia resolver o problema fazendo um merge dos commits especificos dos projetos que foram homologados ou certificados para o master ou para a release o que nos internamente chamamos de "recorte".

É por este problema que, gostaria saber como fazer merge de somente um commit (revisão) no GIT.

Obrigado e no aguardo.

Oi Flavio, bom, o primeiro passo que acredito que seja bom fazer e separar cada projeto pra seu próprio repositório. Segundo, você consegue definir até qual commit seu merge vai ser feito. Não sabia dessa, mas acabei de testar.

Então na branch que você quer fazer o merge você usa o comando:

git merge <commit>

O neste caso é o hash do commit que você quer fazer o merge. Lembrando que todas as alterações antes daquele commit serão levadas em consideração no merge. :)

Considerando que esse comando do merge levaria tudo que for anterior podendo levar outras revisões eu aconselharia você a utilizar o cherry pick e escolher somente os commits da revisão que você quer trocar de branch.

Espero ter ajudado e bons estudos.