Git: split pull-request in kleinere PR-basierend auf die neuen Verzeichnisse in den pull-request
Habe ich ein monolith von einem feature-branch. Statt eine massive PR in den master möchte ich es aufteilen in 3 prs.
Idealerweise möchte ich, um zu ziehen aus einigen standalone-code aus dem feature-Zweig in einen PR von selbst. Dieser code wird in ein neues Verzeichnis und nicht in noch es wäre also eine relativ sichere PR. Aber statt nur zu kopieren Sie das Verzeichnis und erstellen eine einzige commit-und PR würde ich gerne bleiben alle commit-Historie der änderungen für die neue PR.
Ist das möglich mit Git? Ich habe mir in filter-branch, aber wie es scheint, ist für die Aufteilung eine repo in zwei, nicht für die Spaltung ein diff der änderungen in die zwei (wenn das Sinn macht).
InformationsquelleAutor user3768149 | 2015-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Github pull-Anforderungen immer Besorgnis einer Filiale. Wenn Sie auf "split einen pull-request", stellen Sie sicher, es ist split gut genug in verpflichtet, und stellen Sie dann einen Zweig für jede pull Anfrage, die Sie machen wollen und stellen Sie sicher, dass jeder solche Zweig hat alle relevanten verpflichtet.
Es sieht wie eine gute Strategie für Sie möglicherweise erstellen Sie 3 Filialen neben Ihrer Hauptniederlassung, cherry-pick, die relevant sind verpflichtet, jeden Zweig, löschen Sie Sie auf main und main-verbinden mit jedem der drei Zweige. Dann könnte man einen PR-für jeden Zweig und gemeinsame Geschichte zu.
InformationsquelleAutor PSkocik
Ziehen Sie eine Begehen, also eine ganze repo in einen Zweig, nicht nur ein paar Dateien.
Eine gute option wäre dann zurücksetzen, um die Dateien, die Sie nicht wollen, um Ihre Inhalte vor-Zweig
B2
beginntB1
- und include-Dateien, die Sie wollen, mit Ihrer Geschichte.Aber
B2
auch andere Dateien vonB1
dass Sie würde gerne wiemaster
.Können Sie tun (in
B2
)git reset --soft master
:git status
würde sagen, alle änderungen, die Sie tun müssen, um für Ihren index entsprechend meistern. Nicht einfach änderungen vornehmen, um die Dateien, die Sie behalten möchten.Und nicht zu Begehen. Sie wollen einfach nur die Bühne ändert sich wieder zu
master
für einige - Dateien.(Siehe auch "Der praktischen Verwendung von
git reset --soft
?")Sobald das getan ist, ein
git reset --soft B2
bewegt den KOPF zurück, umB2
(aber mit einer index-Aufnahme werden alle änderungen und Löschungen notwendig, um zu reflektieren-master für die richtigen Dateien).Kannst du jetzt mit den anderen Dateien wieder
master
und die Dateien, die Sie wollen unberührte, identischB1
mit Ihrer Geschichte intakt.Hinweis: sobald der KOPF bewegt wird, um
master
, (reset --soft master
), können Sie einfachgit checkout -- afile
für die anderen Dateien, die Sie zurücksetzen möchten, ummaster
, und lassen Sie die Dateien, die Sie möchten, unberührt. Bewegte wieder den KOPF, umB2
erlauben würde, Sie zu verpflichten, das "andere Dateien" den Inhalt (die nun reflektierendemaster
)InformationsquelleAutor VonC