Ich möchte ein Repository von GitHub klonen. Das Problem ist, ich möchte nicht den Hauptzweig; Ich möchte die Version in dieser nicht genehmigten Pull-Anfrage .
Kann ich die Pull-Request-Version anstelle des Haupt-Repositorys klonen?
git
github
pull-request
Fresheyeball
quelle
quelle
clone
sondern um zufetch
sehen: stackoverflow.com/questions/6743514/…Antworten:
Sie können den gewünschten Zweig klonen, indem Sie die
-b
Option und die Pull-Anforderung verwenden:In Ihrem Fall ist der Zweig, den Sie klonen möchten, der Quellzweig der Pull-Anforderung (
feature/mongoose-support
):quelle
Der einfachste Weg, dies zu tun, ist folgender:
Sie befinden sich jetzt in einem neuen Zweig, der sich im Status der Pull-Anforderung befindet.
Möglicherweise möchten Sie einen Alias einrichten, indem Sie ausführen
Jetzt können Sie jede PR auschecken, indem Sie sie ausführen
git pr <pr_number>
odergit pr <pr_number> <remote>
wenn Ihre Github-Fernbedienung nicht benannt istorigin
.quelle
git fetch origin pull/<#>/head:<local_branch_name>
( via ).gitconfig
Datei unter[alias]
:pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
. Auf diese Weise tippe ich einfachgit pr upstream 62
und als nächstes bin ich in einem neuen Zweig von PR # 62 von Upstream! Wenn Sie immer verwenden, könnenorigin
Sie es anstelle von fest codieren$1
, aber das ändert sich für mich.co
z.B:
Nehmen Sie Änderungen vor, übernehmen Sie sie, drücken Sie und öffnen Sie neue PR von Ihrer Gabel auf GitHub
quelle
Sie können den Anweisungen in dieser Übersicht folgen , um die Fernbedienung direkt auschecken zu können, ohne das Repository und den Zweig herausfinden zu müssen.
Anwendungsbeispiel
Für eines meiner Projekte (github3.py) habe ich folgendes in meinem
github3.py/.git/config
Die erste Zeile ist Standard für jede Fernbedienung, mit der Ausnahme, dass
github
sie durch den Namen der Fernbedienung ersetzt wird. Dies bedeutet, dass Remote-Köpfe (oder die Köpfe von Zweigen auf diesem Server) lokalen Fernbedienungen "zugeordnet" werden, denen ein Präfix vorangestellt istgithub/
. Wenn ich alsogit fetch github
einen Zweig auf GitHub hätte, der lokal auf meinem Computer noch nicht bemerkt wurde, würde er den Zweig herunterladen und ich könnte wie folgt zu ihm wechseln :git checkout -t github/branch_name
.Die zweite Zeile macht dasselbe, aber sie macht es für Pull-Anfragen anstelle von Standard-Git-Zweigen. Deshalb siehst du
refs/pull/*/head
. Es holt den Kopf jeder Pull-Anfrage auf GitHub und ordnet ihn zugithub/pr/#
. Wenn also jemand eine Pull-Anfrage sendet und diese beispielsweise mit 62 nummeriert ist, würden Sie Folgendes tun:Und dann wären Sie in einer lokalen Niederlassung namens
pr/62
(vorausgesetzt, sie existiert noch nicht). Es ist schön und bedeutet, dass Sie nicht die Fernbedienungen oder Zweige anderer Leute im Auge behalten müssen.quelle
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
dem Hauptdokument gekommen.git fetch github
, können Sie es dann tungit co -t github/pr/#
. Auf diese Weise müssen Sie die Remote-URL nicht kopieren und einfügen, den Filialnamen ermitteln usw. Sie erhalten dann ohne zusätzlichen Aufwand gut benannte, präzise und genaue Filialnamen. Aber ich verstehe, dass es überwältigend erscheinen mag.Wie kann ich eine nicht zusammengeführte Pull-Anfrage für einen Zweig abrufen, den ich nicht besitze?
quelle
git pull
erstellt eine Zusammenführung in den aktuellen Zweig. Normalerweise möchten Sie für eine PR nurgit fetch
den Code des Originalautors erhalten (dieser ist dann als FETCH_HEAD zugänglich). Wenn Sie eine Zusammenführung wünschen, ist es auch erwähnenswertpull/2/merge
(anstelle vonpull/2/head
) - dies gibt GitHub die genaue Zusammenführungszusage, die passieren würde, wenn Sie jetzt auf die Schaltfläche [Zusammenführen] klicken würden.Wenn ein Benutzer eine Pull-Anforderung sendet, fordert er an, dass einige Änderungen von einem Zweig auf seinem Klon eines Forks wieder in das Repository eines anderen Benutzers übernommen werden.
Die gewünschten Änderungen können von der Quelle der Pull-Anforderung abgerufen werden. Klonen Sie dazu das Repository des Benutzers (
git://github.com/berstend/frappe.git
) und überprüfen Sie den Zweig, von dem er die Pull-Anforderung erstellt hat (feature/mongoose-support
).quelle
Nach der Installation von Git-Extras
Sie können einfach verwenden
git pr
quelle
Mit der offiziellen neuen Befehlszeilenschnittstelle von Github :
Wo
44
ist die PR-Nummer, kann aber auch der Filialname sein.Weitere Details und Optionen sowie Installationsanweisungen finden Sie hier .
quelle
Diese Pull-Anforderung zeigt die Commits von der Gabel dieser Person an, sodass Sie sehen können, dass sie ihre Änderungen aus dem
feature/mongoose-support
Zweig überträgt.Sie können sein Repository klonen und diesen Zweig auschecken
quelle
Für mich war es so einfach wie
Wo
4
wurde hier gefunden:quelle