É melhor iniciar uma solicitação de recebimento ou executar uma consolidação de mesclagem local no mestre?

12

Estou usando o GitHub há algum tempo e normalmente costumo enviar por push meus ramos de recursos e iniciar uma solicitação de recebimento que eu mesclei. Descobri que isso me ajudou a acompanhar onde eu fundei as filiais.

Recentemente, porém, tenho lido cada vez mais sobre como o Git funciona e percebi que posso usar os commits de consolidação para me referir a quando mesclamos ramificações.

Portanto, o que devo fazer ao mesclar uma ramificação de recurso no mestre:
execute uma consolidação de mesclagem no mestre e faça o envio a montante OU Empurre o ramo local e inicie uma solicitação de recebimento?

Li a introdução de solicitações pull para uma equipe de 2 pessoas - mesclar minhas próprias solicitações? e Qual é o fluxo de trabalho com 2 pessoas em um projeto e devo pedidos abra de um ramo no repo oficial ou o garfo? mas nenhum deles parece responder ao que estou procurando.

Ashhar Hasan
fonte
2
O que exatamente você acha que falta nessas respostas?
precisa
O primeiro fala sobre isso no sentido de que as solicitações pull devem ser revisadas por pares. O segundo oferece um fluxo de trabalho. O terceiro nem está relacionado.
Ashhar Hasan
1
Eu estou analisando isso de uma das práticas recomendadas ou de como manter um bom ponto de vista da história do git .
Ashhar Hasan
1
Quando mesclo um PR, faço isso mesclando a ramificação localmente. Isso me permite garantir que a mesclagem seja aplicada corretamente e executar novamente os testes antes de publicar o resultado. As solicitações pull do GitHub são apenas uma formalização desse fluxo de trabalho; o próprio Git não tem um conceito de PRs.
amon
2
Quando um PR é mesclado, ele produz um commit de mesclagem no master, então eu não acho que isso faça alguma diferença no histórico do git. Portanto, acho que não há motivo para usar um ou outro além da sua preferência pessoal entre a linha de comando e a interface do usuário do Github.
Ixrec

Respostas:

14

mecanismo de git-merge:
Usando git merge featureenquanto em mestre se funde o ramo featurede mastere produz um merge-commit(se o ramo não pode ser avançado rapidamente) na história git. Para forçar uma merge-commitcriação, use a --no-ffopção com merge.

Mecanismo de solicitação de mesclagem pull:
quando iniciamos uma solicitação pull no GitHub, ele cria um local GitHub Issueonde as pessoas podem conversar e discutir os commits no PR antes de mesclá-lo. Quando um PR é mesclado no GitHub, ele faz exatamente a mesma coisa que git merge feature.

O que devo fazer?
Portanto, no que diz respeito à história, não há diferença entre os dois.
E no que diz respeito à contribuição, seus colaboradores não precisarão de nada diferente para as duas situações. Eles são os mesmos (menos a conversa agradável).

Práticas recomendadas:
E não consegui encontrar as melhores práticas, mas a lógica diz que os PRs não são muito úteis se houver apenas uma pessoa no repositório.

@lxrec e @amon me ajudaram a chegar a essa conclusão.

Ashhar Hasan
fonte
4
Dica: git mergepode não registrar um commit de mesclagem se ele puder fazer um "avanço rápido". Para forçar uma consolidação de mesclagem, você pode adicionar a --no-ffopção
amon
Eu prefiro fazer git-merge no local do que fazê-lo no githuib.com, se eu tivesse que fazer algo assim no github.com eu preferiria não fazer diretamente no ramo principal, preferiria o ramo não mestre que pode primeiro seja definido no modo de preparação antes de disponibilizá-lo para produção.
Ciasto piekarz
5

Como Ashhar disse, tecnicamente e em termos de história, não há diferença. Para projetos com uma equipe pequena, prefiro mesclar diretamente, em vez da etapa extra de criar um PR. No entanto, quando um recurso precisa de revisão / feedback ou quando é um WIP e mais de uma pessoa está trabalhando nele, costumo abrir um PR e adicionar uma lista de tarefas à descrição do PR.

Observe que git mergepode usar o avanço rápido se não houver alterações no mestre, portanto, você pode querer usá-lo git merge --no-ff. Eu costumo não.

Portanto, em resumo, use apenas PRs quando precisar de discussão. Caso contrário, basta mesclar diretamente.

Louay Alakkad
fonte
1
Também vale a pena mencionar que a discussão e o feedback sobre uma solicitação pull podem vir de fontes automatizadas e também de membros da equipe. Se você tiver um servidor de IC configurado, ele poderá fornecer resultados de compilação e teste para nunca mesclar algo que interrompa a compilação no mestre.
Eric