Estou usando o GitHub há algum tempo e normalmente costumava fazer push dos meus branches de recursos e iniciar um Pull Request que eu mesclei. Descobri que isso me ajudou a acompanhar onde mesclei branches.

Mas recentemente tenho lido mais e mais sobre como o Git funciona e percebi que posso usar os merge-commits para me referir a quando mesclei branches.

Então, o que devo fazer ao mesclar um branch de recurso no master:
Executar um merge-commit no master e, em seguida, colocá-lo no upstream OU Enviar o branch local e iniciar uma solicitação pull?

Eu li Apresentando 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 abrir solicitações pull de um branch no repo oficial ou meu fork? mas nenhum deles parece responder o que estou procurando.

Comentários

  • O que exatamente você acha que está faltando nessas respostas?
  • O primeiro fala sobre isso do ponto de vista de que as solicitações pull devem ser revisadas por pares. O segundo oferece um fluxo de trabalho. O terceiro não é ' nem mesmo relacionado.
  • Estou olhando para isso em Melhores práticas ou Como manter um bom histórico do git do ponto de vista.
  • Quando mesclo um PR, faço isso mesclando o branch localmente. Isso me permite ter certeza de que a mesclagem se aplica perfeitamente e executar novamente os testes antes de publicar o resultado. GitHub ' s Solicitações Pull são apenas uma formalização desse fluxo de trabalho, o Git em si não tem um conceito de PRs.
  • Quando um PR é mesclado, ele produz uma fusão commitar no master, então eu não ' acho que isso faz alguma diferença no histórico do git. Portanto, eu não ' não acho que haja qualquer razão para usar um ou outro além de sua preferência pessoal entre a linha de comando e a IU do Github.

Resposta

mecanismo git-merge:
Usar git merge feature enquanto no mestre mescla o branch feature para master e produz um merge-commit (se o branch não pode ser acelerado) no histórico do git. Para forçar uma merge-commit sendo feita, use a opção --no-ff com merge.

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

O que devo fazer ?
Então, no que diz respeito à história, não há diferença entre os dois.
E no que diz respeito à contribuição, seus contribuidores não terão fazer algo diferente para as duas situações. Eles são iguais (sem o bate-papo simpático).

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 um único contribuidor para um repositório.

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

Comentários

  • Dica: git merge pode não registrar um commit de mesclagem se puder fazer um “avanço rápido”. Para forçar um commit de mesclagem, você pode adicionar a opção --no-ff.
  • Eu prefiro fazer git-merge em local em vez de fazer em githuib.com, se eu teria de qualquer coisa no github.com. Eu preferiria não fazer diretamente no branch master, prefiro usar o branch não master, que pode primeiro ser definido no modo de teste antes de torná-lo disponível para produção.

Resposta

Como Ashhar disse, em termos técnicos e históricos, não há diferença. Para projetos com um 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 estará trabalhando nele, tendo a abrir um PR e adicionar um lista de tarefas para a descrição do PR.

Observe que git merge pode usar o avanço rápido se não houver alterações no mestre, então você pode querer usar git merge --no-ff. Costumo não usar.

Então, em resumo, use apenas RP s quando você precisa de discussão. Caso contrário, basta mesclar diretamente.

Comentários

  • Vale ' também mencionar que a discussão e o feedback sobre uma solicitação pull podem vêm de fontes automatizadas, bem como de membros da equipe. Se você tiver um servidor CI configurado, ele pode fornecer resultados de compilação e teste para que você nunca mescle algo que interrompa a compilação no mestre.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *