Série da semana: Primeiros passos no Angular

Veja mais

Merge de somente uma revisão no GIT

26/01/2019

7

Git

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 acaba levando todo o que esta abaixo desta revisão que é o que eu não quero, pois somente quero levar a revisão informada.

Agradeço e fico no aguardo.
Responder

Posts

Olá Rodolfo,

Não é possível levar uma revisão específica sem considerar as anteriores, porque pra esta revisão existir ela já é feita se baseando nas revisões anteriores

Para os desenvolvedores do Git, se você quer enviar uma revisão mas não as anteriores, então você cometeu um erro de commits.

Imagine que você parou na revisão 100 e criou um branch e aí foi comitando 101, 102, 103, 104 e quer que a revisão 104. O merge do git precisa fazer as anteriores antes que faça a 104 porque a 104 é baseada na 103 que por sua vez é baseada na 102 e assim por diante.

Uma dica que posso te dar, é o que eu faço com o mercurial (não testei no git) que é:
1 - copiar os arquivos da revisão 104 para uma outra pasta,
2 - criar um novo branch na revisão 100 (revisão raiz);
3 - sobrescrever com os arquivos da revisão 100 do novo branch com os arquivos da versão 104 que estão na cópia. (por favor, faça backup antes. Não vou poder ajudar caso algo ocorra e corrompa os arquivos do git).

O esperado é que depois de um novo commit no novo branch, os arquivos da revisão 101 sejam idênticos aos da revisão 104 no branch antigo.

Espero ter ajudado.
Um forte abraço e fique com Deus.
Responder

28/01/2019

Rodolfo Pasten

Obrigado pelo retorno Hélio! Entendo a forma de trabalhar do git, porém a duvida surgiu devido ao seguinte problema, veja se pode me ajudar:

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.
Responder