Puxar solicitação sem bifurcação?

105

Aqui estão as etapas de contribuição de código do tópico " Como posso contribuir com o código de outras pessoas no GitHub? "

  1. Desenhe o projeto
  2. Faça um ou mais commits bem comentados e limpe o repositório. Você pode fazer uma nova ramificação aqui se estiver modificando mais de uma peça ou recurso.
  3. Execute uma solicitação de pull na interface da web do github.

É possível fazer uma solicitação pull sem bifurcar um repo?

É muito triste ver mais de 20 repos em minha conta que foram bifurcados para algumas solicitações de pull. Eles não têm atividade e zero estrelas / seguidores. Parece que estou apenas copiando o código de alguém para um dia negro.

Jaspe
fonte
Por que você iria querer?
3
Boa pergunta. Também não está claro se esses 20 repositórios estão atualizados com o original (ou excluí-los).
Corey Alix,

Respostas:

95

Se você não tem acesso para criar branches nesse repositório, não há como criar uma solicitação pull sem bifurcação .

Ryan Bigg
fonte
8
Você pode explicar como você pode criar uma solicitação pull se você TEM acesso a branches nesse repositório?
bolinfest
13
O GitHub tem um bom guia sobre isso: help.github.com/articles/creating-a-pull-request
Ryan Bigg
2
Apenas um lembrete de algo que pode não ser tão claro para todos. Você precisa criar um fork para cada repositório com o qual você contribui ... mas criar branches em seu fork permite que você trabalhe em mais de um PR de uma vez para o repositório upstream. Você não precisa de 20 garfos do mesmo repo para contribuir com 20 PRs.
JulioHM
24

Depois que suas solicitações pull forem aceitas, você pode excluir o repo com segurança .

Depois disso, basta clonar diretamente do repositório upstream original.

Se você tiver outras solicitações de pull para fazer, você deve fazê-las em seu próprio branch, o que significa que você pode excluir com segurança o branch que você fez para gerenciar uma solicitação de pull aceita (como em " Minha solicitação de pull foi mesclada, o que fazer próximo? ")

VonC
fonte
2
Para sua informação, o github recentemente adicionou um botão para mesclar solicitações de pull para tornar mais fácil (e intuitivo) excluir o branch de solicitação de pull: github.com/blog/1335-tidying-up-after-pull-requests
David M
10

Por definição, uma solicitação pull envolve uma bifurcação, a menos que você tenha acesso de confirmação ao repositório de destino. Você pode fazer algumas coisas, no entanto:

  1. Se você não tem o acesso de submissão, criar uma filial e fazer o seu pedido puxar contra o novo ramo.
  2. Publique seu patch no corpo de uma edição. Este não é realmente o jeito do GitHub, mas certamente funciona.
  3. Bifurque um repositório, crie uma solicitação de pull e exclua a bifurcação assim que a solicitação de pull for mesclada ou recusada.

Se você está apenas tentando evitar manter repositórios que não está usando ativamente, eu pessoalmente sugiro a opção nº 3. Ele segue o fluxo de trabalho GitHub aceito sem bagunçar seu painel.

Todd A. Jacobs
fonte
Provavelmente melhor colocado aqui: 4. Manter uma segunda conta Github apenas para lidar com esses cenários de pull-solicitação-e-esqueça. Não importa se essa conta tem 20 repositórios inativos, pois não é a conta principal.
tanius
7

github suporta modelo de repositório compartilhado

O modelo de repositório compartilhado é mais prevalente com pequenas equipes e organizações que colaboram em projetos privados. Todos têm acesso por push a um único repositório compartilhado e ramos de tópicos são usados ​​para isolar as mudanças.

As solicitações pull são especialmente úteis no modelo Fork & Pull porque fornecem uma maneira de notificar os mantenedores do projeto sobre as mudanças em sua bifurcação. No entanto, eles também são úteis no modelo de repositório compartilhado, onde são usados ​​para iniciar a revisão do código e a discussão geral sobre um conjunto de alterações antes de serem mesclados em uma ramificação da linha principal.

Ya Zhuang
fonte
5
Observe como isso não explica como criar uma solicitação pull neste modelo.
bolinfest
0

Você ainda precisa desse one-liner: hub fork;git push -u $GIT_USER HEAD;hub pull-request

Anona112
fonte