Ich arbeitete an einem Feature-Zweig und ich machte eine git checkout -b feature/other-feature
, habe etwas gearbeitet, es eingepflegt und dann zum Ursprungs-Feature / Other-Feature auf Github geschoben.
Wenn ich eine Pull-Anfrage von der erstellt habeandere Feature-Zweig auf Github Ich erkannte, dass es eine Last von Commits aus dem ursprünglichen Feature-Zweig zeigte - Commits, die mit Recht zusammengeführt werden sollten, um aus dem ursprünglichen Zweig zu entwickeln.
Ich denke, was ich falsch gemacht habe, war wegzulassen git checkout develop
bevor ich es tat git checkout -b feature/other-feature
und so was ich denke, ich möchte tun, um diese Situation zu korrigieren, ist Rebase andere Feature auf entwickeln.
Aber da ich meinen Fehler zur Herkunft geschoben habe und andere Leute Klone dieses Repos haben, muss ich etwas umbuchen oder etwas anderes tun?
Antworten:
3 für die Antwort № 1Ja, Sie müssen Ihre Kopie von rebasieren feature/other-feature
. In diesem Fall jedoch ein einfaches git rebase develop
wird wahrscheinlich nicht funktionieren, weil du einen anderen Feature-Zweig abgezweigt hast, anstatt direkt aus develop
. Sie müssen verwenden rebase --onto
:
git rebase --onto develop feature/earlier-feature feature/other-feature
Hier, feature/earlier-feature
ist der Feature-Zweig, den Sie ausgecheckt haben, wenn Sie das Original sterben
git checkout -b feature/other-feature
.
Diese Rebase wird:
- Nimm die Commits rein
feature/other-feature
welche sind nicht imfeature/earlier-feature
. - Wenden Sie diese Commits erneut an
develop
.
Sie sollten mit einem geänderten Zweig enden feature/other-feature
das basiert jetzt auf develop
.
Anmerkungen
- Wegen der Rebasierung müssen Sie Ihren Zweig zwangsweise auf Ihr GitHub-Repository verschieben. Das ist kein Problem, solange Sie den einzigen Klon Ihres Repositorys haben. Wenn Sie den Repo mit anderen verwenden, sind die Dinge schwieriger (siehe unten).
- Die Rebase kann zu Konflikten führen. Sie müssen diese manuell beheben.
- Weiterführende Literatur: Die Konzepte hinter dem Rebasing und die Bedeutung von
rebase --onto
sind in dem Buch "Pro Git" gut erklärt. Siehe Kapitel 3.6, Git Branching - Rebasing.
Wenn andere Ihr Repository geklont haben
Du schreibst
Aber da ich meinen Fehler zur Herkunft geschoben habe und andere Leute haben Klone dieses Repos, muss ich neu aufstellen oder etwas anderes tun?
Sie können wie oben beschrieben erneut ein Rebase durchführen. Sie dürfen den umgestuften Zweig jedoch nicht unter dem alten Namen forcieren. Erstellen Sie stattdessen eine Kopie der Verzweigung:
git checkout -b feature/other-feature-2 feature/other-feature
Dies wird einen neuen Zweig erstellen feature/other-feature-2
das ist eine exakte Kopie von feature/other-feature
. Sie können dann den neuen Zweig neu erstellen und unter dem neuen Namen verschieben. Dann sag es allen feature/other-feature
wurde abgelöst von feature/other-feature-2
und löschen feature/other-feature
auf GitHub. Allen zu sagen, ist der Preis, den Sie für das Rebasing zahlen :-).