2016-07-01 9 views
2

Auf einem aktiv entwickelten Projekt hat der Master ein Modell FollowingModel genannt.halten mit Master aus anderen Zweig

Ich verzweigte vom Master und arbeitete an meinem Zweig für ein paar Tage - Erstellen von Methoden, die die FollowingModel verwendet. Zu der Zeit, als ich einen PR machte, wurde ein weiterer Zweig mit dem Master verschmolzen, der die FollowingModel zu Following änderte. Ich könnte in den Master ohne einen Merge-Konflikt zusammenführen, aber die Anwendung würde brechen, wenn ich dies tun würde - da meine Methoden ein Modell aufrufen würde, dessen Name geändert hat.

Wie ist die richtige Vorgehensweise in Situationen wie diesem? In einem großen Projekt, in dem es viele bewegliche Teile gibt, wie wird dafür gesorgt?

Antwort

1

Sie müssen Ihre lokale Zweigstelle auf den neuen master umbuchen, bevor Sie Ihre PR einreichen.

  • Sie holen aus "upstream" (der Remote-Referenzierung der ursprünglichen Repo),
  • merge upstream/master-master, um Ihre eigenen master,
  • rebase Ihre Niederlassung oben auf master und Kraft Push zu aktualisieren (und passen sie die Ihre Methodennamen zu dem, was master verwendet)

das Ziel bleibt für die Betreuer der Lage sein, schnell vorzuspulen Ihre Niederlassung auf seinem/ihrem master Zweigstelle, wenn Sie Ihre PR erhalten.

Wenn Sie direkt auf den ursprünglichen Repo schieben, dann:

  • es keine "klassischen" PR ist.
    aber "GitHub Secrets" nicht erwähnt:

Wussten Sie, dass Sie Pull Requests zwischen Zweigen, auf demselben Repository verwenden kann?
Sie müssen Repositorys nicht forkieren, um Pull Requests zu verwenden.
Intern verwenden wir bei GitHub fast immer Pull Requests zwischen Zweigen.

  • die Sequenz wird:

    git checkout master 
    git pull origin master 
    git checkout featureBranch 
    git rebase master 
    # fix bugs 
    git push --force origin newBranch 
    

Aber das setzt Sie das einzige auf newBranch arbeiten (oder ist dies der erste Stoß newBranch). Wenn Sie das mehrmals machen, ändert sich die Historie von newBranch bei jedem Kraftstoß.

+0

so, 'git pull Herkunft Herkunft/Master; git checkout featureBranch; git merge origin/master; ', behebe Fehler,' git push origin featureBranch'? –

+0

@DarshanChaudhary Nein: Herkunft ist Ihre Gabel, es spiegelt nicht das Neueste aus dem Original Repo. Fügen Sie einen Remote "upstream" mit der URL hinzu, die auf diesen ursprünglichen Repo verweist. 'git remote add upstream/url/zu/original/repo' – VonC

+0

(meine 'Herkunft' ist meine' upstream', ich dränge zum ursprünglichen Repo, auf einem anderen Zweig, der nach der Code-Überprüfung in 'master' verschmolzen wird). Ich verstehe, dein Vorschlag ist - 'git checkout master; git pull Ursprungs-Master; git checkout featureBranch; git Rebase Master; ', Fehler beheben,' git push Herkunft newBranch'? –

1

Die Sache, die Sie normalerweise tun würden, bevor Sie zurück zusammenführen, ist Rebasing auf Master. Und das ist, was Sie in dieser Situation tun sollten, entweder Rebasing oder Zusammenführen von Master zurück in Ihre Branche. Danach haben Sie die neuen Master-Änderungen in Ihrer Branche und können alle auftretenden Probleme beheben. Nachdem Sie alle Fehler behoben haben, können Sie zu Master zusammenführen.

+0

Also, i) Rebase Feature Zweig auf dem Master, beheben Sie die Fehler und 'git merge', drücken Sie den Master-Zweig zu einem Remote-Repo ? Wo soll ich es hinbringen, zu einer neuen Filiale im Remote Repo? ii) den Master-Zweig in Feature-Zweig zusammenführen, Bugs beheben, den Feature-Zweig auf Remote-Repo schieben. Wird dies nicht zu einer Duplizierung von Git-Commits führen und dazu führen, dass ich Commits mache, die nicht mit meinem Feature in meiner Branche zusammenhängen? –

+0

Beide Wege sind in Ordnung. Entweder rebase oder merge, ist nicht wirklich wichtig, wichtig ist, dass Sie die Änderungen in Master in Ihrer Branche haben. Nicht sicher, was du mit dem letzten Satz meinst, aber ja, du wirst ein Merge-Commit haben, wenn du es zusammenführst, du wirst keins haben, wenn du umlegst, aber Rebase wird deinen gesamten Branch-History auf dein Feature umschreiben- Ast. – tkausl

+0

Gibt es keine bessere Idee, den Master im Feature-Zweig zu rebasieren als umgekehrt? Auf diese Weise werde ich die Commits vom Master-Zweig haben, ich kann ihre Geschichte durch Rebasieren umschreiben und sie in den gleichen Zweig auf dem Remote-Repo schieben –

Verwandte Themen