Demande de tirage sans fourche?

105

Voici les étapes de la contribution au code de la rubrique « Comment puis-je contribuer au code d'autres utilisateurs dans GitHub? »

  1. Fork le projet
  2. Faites un ou plusieurs commits bien commentés et propres dans le référentiel. Vous pouvez créer une nouvelle branche ici si vous modifiez plusieurs pièces ou fonctions.
  3. Exécutez une pull request dans l'interface Web de github.

Est-il possible de faire une pull request sans forger un dépôt?

C'est assez triste de voir plus de 20 dépôts dans mon compte qui ont été fourchus pour certaines demandes de tirage. Ils n'ont alors aucune activité et aucune étoile / suiveur. On dirait que je ne fais que copier le code de quelqu'un pour une journée noire.

Jaspe
la source
Pourquoi voudriez-vous?
3
Bonne question. Il est également difficile de mettre à jour ces 20 dépôts avec l'original (ou de les supprimer).
Corey Alix

Réponses:

95

Si vous n'avez pas accès pour créer des branches sur ce référentiel, il n'y a aucun moyen de créer une pull request sans forking .

Ryan Bigg
la source
8
Pouvez-vous expliquer comment vous pouvez créer une pull request si vous avez accès aux branches de ce référentiel?
bolinfest
13
GitHub a un bon guide à ce sujet: help.github.com/articles/creating-a-pull-request
Ryan Bigg
2
Juste un rappel pour quelque chose qui peut ne pas être aussi clair pour tout le monde. Vous devez créer un fork pour chaque référentiel auquel vous contribuez ... mais la création de branches dans votre fork vous permet de travailler plus d'un PR à la fois pour le dépôt en amont. Vous n'avez pas besoin de 20 forks du même repo pour contribuer avec 20 PR.
JulioHM
24

Une fois vos demandes d'extraction acceptées, vous pouvez supprimer le dépôt en toute sécurité .

Ensuite, clonez simplement directement à partir du dépôt d'origine en amont.

Si vous avez d'autres pull requests à faire, vous devez les faire dans leur propre branche respective, ce qui signifie que vous pouvez supprimer en toute sécurité la branche que vous avez créée pour gérer une pull request acceptée (comme dans " Ma pull request a été fusionnée, que faire suivant? ")

VonC
la source
2
Pour info, github a récemment ajouté un bouton aux demandes d'extraction fusionnées pour faciliter (et intuitivement) la suppression de la branche de demande d'extraction: github.com/blog/1335-tidying-up-after-pull-requests
David M
10

Par définition, une pull request implique un fork sauf si vous avez un accès de validation au référentiel de destination. Cependant, vous pouvez faire plusieurs choses:

  1. Si vous n'avez un accès pour , créer une branche et faire votre demande de traction contre la nouvelle branche.
  2. Publiez votre patch dans le corps d'un numéro. Ce n'est pas vraiment la manière GitHub, mais cela fonctionne certainement.
  3. Forkez un référentiel, créez une pull request, puis supprimez le fork une fois que la pull request est fusionnée ou refusée.

Si vous essayez simplement d'éviter de conserver des référentiels que vous n'utilisez pas activement, je suggère personnellement l'option n ° 3. Il adhère au flux de travail GitHub accepté sans encombrer votre tableau de bord.

Todd A. Jacobs
la source
Le mieux est probablement de le mettre ici: 4. Maintenez un deuxième compte Github juste pour gérer ces scénarios d'extraction et d'oubli. Peu importe si ce compte contient 20 dépôts inactifs, car ce n'est pas le compte principal.
tanius
7

github prend en charge le modèle de référentiel partagé

Le modèle de référentiel partagé est plus répandu avec de petites équipes et organisations collaborant sur des projets privés. Tout le monde a accès à un seul référentiel partagé et les branches de rubrique sont utilisées pour isoler les modifications.

Les demandes d'extraction sont particulièrement utiles dans le modèle Fork & Pull car elles fournissent un moyen d'informer les responsables de projet des changements dans votre fork. Cependant, ils sont également utiles dans le modèle de référentiel partagé où ils sont utilisés pour lancer la révision du code et une discussion générale sur un ensemble de modifications avant d'être fusionnés dans une branche principale.

Ya Zhuang
la source
5
Notez que cela n'explique pas comment créer une demande d'extraction dans ce modèle.
bolinfest
0

Vous avez toujours besoin de ce one-liner: hub fork;git push -u $GIT_USER HEAD;hub pull-request

Anona112
la source