Frage

Ich weiß, dass es auf SO viele Fragen zu diesem Thema gibt, aber ich kann anscheinend überhaupt nicht die Antwort finden, nach der ich suche.

Ich habe gerade meinen Task-Zweig mit meinem Master zusammengeführt und bin bereit, meine Änderungen an den Remote-Master-Zweig zu übertragen.Sie werden jedoch als zwei Commits angezeigt:

    commit 878c07412aab6a6b06b7fc8dd84c2418cc4f31d8
Merge: 9ffa590 c9f5552
Author: ***
Date:   Mon May 21 16:02:36 2012 +0100

    Merge branch 'modelUpdate4'

    Conflicts:
        ***.xcodeproj/project.pbxproj

commit c9f5552862872673317701c3dffd7fb6b6daa02c
Author: ***
Date:   Mon May 21 15:03:21 2012 +0100

    Modified model according to requests.  Repopulated seeded database.

Dies ist die Ausgabe von Git Log und den beiden Commits, die ich zu einem zusammenfassen möchte.Wenn ich es jedoch tue:

git rebase -i HEAD~2

Tatsächlich werden nur vier zuvor festgeschriebene (und gepushte) Festschreibungen angezeigt.Verstehe ich falsch, wie meine Zweige wieder zusammengeführt werden?Wenn ich versuche, git rebase -i auszuführen, wird nur der erste Commit in der Git-Log-Liste angezeigt.

Danke!

War es hilfreich?

Lösung

Da Sie sagten, dass bereits vier Commits gepusht wurden, vermute ich, dass Ihr Diagramm (git log --oneline --decorate --graph) sieht in etwa so aus, zwischen denen es Verzweigungs-Commits gibt master Und modelUpdate4 bereits auf das Remote-Repo übertragen:

* (master, modelUpdate4, HEAD) Merge branch 'modelUpdate4'
| \
|  * (origin/modelUpdate4) Modified model according to requests. [HEAD^2]
|  |
|  * Another commit on modelUpdate4
|  |
|  * Yet another commit on modelUpdate4!
|  |
*  | (origin/master) Something that conflics with a commit in modelUpdate4 [HEAD~1]
| /
* Previous commit on master [HEAD~2]

HEAD~2 ist der erste Elternteil des ersten Elternteils und seit Ihrem HEAD ist eine Verschmelzung von modelUpdate4 hinein master, es bezieht sich auf zwei Commits im Nachhinein master Linie. HEAD^2 Ist HEAD's zweiter Elternteil, also das Commit vorher HEAD unten modelUpdate4 Linie.(Siehe auch: http://paulboxley.com/blog/2011/06/git-caret-and-tilde)

Wenn HEAD~2 ist Ihre neue Basis, Sie erhalten alle Verpflichtungen dazwischen HEAD~2 Und master in einer geraden Linie.Sie müssen sich auch mit dem Zweigkonflikt in der auseinandersetzen modelUpdate4 begehen, wo es passiert.

* (master, HEAD) Merge branch 'modelUpdate4'
|
* Modified model according to requests.  Repopulated seeded database.
|
* Another commit on modelUpdate4
|
* Yet another commit on modelUpdate4!
|
* Something on master that conflics with modelUpdate4
|
* Previous commit on master

Wenn jemand anderes diese Remote-Zweige verwendet oder Sie Ihren Verzweigungsverlauf beibehalten möchten, führen Sie kein Rebase durch.Dadurch wird der bereits im Remote-Repo enthaltene Verlauf neu geschrieben, was allen anderen nur Kopfschmerzen bereiten wird.Schieben Sie den Merge-Commit raus und Sie werden goldrichtig sein.

Alternativ können Sie auch direkt auf umbasieren origin/master. origin/modelUpdate4 würde in den Git-Boonies landen, aber da es sich um einen Task-Zweig handelt, wette ich, dass Sie ihn sowieso einfach löschen würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top