Anfrage ohne Gabelung ziehen?


105

Hier sind Schritte zum Code-Beitrag aus dem Thema " Wie trage ich zum Code anderer in GitHub bei? "

  1. Fork das Projekt
  2. Machen Sie einen oder mehrere gut kommentierte und saubere Commits für das Repository. Sie können hier einen neuen Zweig erstellen, wenn Sie mehr als einen Teil oder eine Funktion ändern.
  3. Führen Sie eine Pull-Anfrage in der Weboberfläche von github durch.

Ist es möglich, eine Pull-Anfrage zu stellen, ohne ein Repo zu geben?

Es ist ziemlich traurig, mehr als 20 Repos in meinem Konto zu sehen, die für einige Pull-Anfragen gespalten wurden. Sie haben dann keine Aktivität und keine Sterne / Anhänger. Sieht so aus, als würde ich nur den Code von jemandem für einen schwarzen Tag kopieren.


Warum willst du?

3
Gute Frage. Es ist auch unklar, diese 20 Repos mit dem Original auf den neuesten Stand zu bringen (oder sie zu löschen).
Corey Alix

Antworten:


95

Wenn Sie keinen Zugriff zum Erstellen von Zweigen in diesem Repository haben, können Sie keine Pull-Anforderung ohne Forking erstellen .


8
Können Sie bitte erläutern, wie Sie eine Pull-Anfrage erstellen können, wenn Sie Zugriff auf Zweige in diesem Repository haben?
Bolinfest

13
GitHub hat eine gute Anleitung dazu: help.github.com/articles/creating-a-pull-request
Ryan Bigg

2
Nur eine Erinnerung an etwas, das möglicherweise nicht für alle so klar ist. Sie müssen für jedes Repository, zu dem Sie beitragen, eine Verzweigung erstellen. Durch das Erstellen von Verzweigungen in Ihrer Verzweigung können Sie jedoch mehrere PRs gleichzeitig für das Upstream-Repo bearbeiten. Sie benötigen nicht 20 Gabeln aus demselben Repo, um mit 20 PRs beizutragen.
JulioHM

24

Sobald Ihre Pull-Anfragen akzeptiert wurden, können Sie das Repo sicher löschen .

Klonen Sie anschließend einfach direkt vom ursprünglichen Upstream-Repo.

Wenn Sie andere Pull-Anforderungen stellen müssen, sollten Sie diese in ihrem jeweiligen Zweig stellen. Dies bedeutet, dass Sie den Zweig, den Sie zum Verwalten einer akzeptierten Pull-Anforderung erstellt haben, sicher löschen können (siehe " Meine Pull-Anforderung wurde zusammengeführt, was zu tun ist") weiter? ")


2
Zu Ihrer Information, Github hat kürzlich eine Schaltfläche zum Zusammenführen von Pull-Anforderungen hinzugefügt, um das Löschen des Pull-Anforderungszweigs zu vereinfachen (und intuitiv zu gestalten): github.com/blog/1335-tidying-up-after-pull-requests
David M

10

Per Definition umfasst eine Pull-Anforderung einen Fork, es sei denn, Sie haben einen Commit-Zugriff auf das Ziel-Repository. Sie können jedoch einige Dinge tun:

  1. Wenn Sie einen Festschreibungszugriff haben, erstellen Sie einen Zweig und stellen Sie Ihre Pull-Anforderung für den neuen Zweig.
  2. Veröffentlichen Sie Ihren Patch im Hauptteil eines Problems. Dies ist nicht wirklich der GitHub-Weg, aber es funktioniert auf jeden Fall.
  3. Verzweigen Sie ein Repository, erstellen Sie eine Pull-Anforderung und löschen Sie die Verzweigung, sobald die Pull-Anforderung zusammengeführt oder abgelehnt wurde.

Wenn Sie nur vermeiden möchten, dass Repositorys in der Nähe bleiben, die Sie nicht aktiv verwenden, empfehle ich persönlich Option 3. Es bleibt beim akzeptierten GitHub-Workflow, ohne das Dashboard zu überladen.


Wahrscheinlich am besten hier: 4. Pflegen Sie ein zweites Github-Konto, um diese Pull-Request-and-Forget-Szenarien zu bewältigen. Es spielt keine Rolle, ob dieses Konto 20 inaktive Repos enthält, da es nicht das Hauptkonto ist.
Tanius

7

github unterstützt das Shared Repository Model

Das Shared Repository-Modell ist bei kleinen Teams und Organisationen, die an privaten Projekten zusammenarbeiten, häufiger anzutreffen. Jeder erhält Push-Zugriff auf ein einzelnes freigegebenes Repository, und Themenzweige werden verwendet, um Änderungen zu isolieren.

Pull-Anforderungen sind im Fork & Pull-Modell besonders nützlich, da sie eine Möglichkeit bieten, Projektbetreuer über Änderungen an Ihrem Fork zu informieren. Sie sind jedoch auch im Shared Repository-Modell nützlich, wo sie verwendet werden, um die Codeüberprüfung und die allgemeine Diskussion über eine Reihe von Änderungen einzuleiten, bevor sie zu einem Hauptzweig zusammengeführt werden.


5
Beachten Sie, dass dies nicht erklärt, wie in diesem Modell eine Pull-Anforderung erstellt wird.
Bolinfest

0

Sie brauchen noch diesen Einzeiler: hub fork;git push -u $GIT_USER HEAD;hub pull-request

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.