/ / Wie ändere ich den git-Zweig, aus dem ich verzweigte? - git, Versionskontrolle, github, Branching-and-merging

Wie ändere ich den git-Zweig, von dem ich verzweigt habe? - git, Versionskontrolle, github, Branching-and-merging

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 № 1

Ja, 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:

  1. Nimm die Commits rein feature/other-feature welche sind nicht im feature/earlier-feature.
  2. 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-2und löschen feature/other-feature auf GitHub. Allen zu sagen, ist der Preis, den Sie für das Rebasing zahlen :-).