Ja, aber meistens geschieht dies manuell. Sie werden Git mitteilen, dass Sie die beiden relevanten Zweige zusammenführen, aber nicht versuchen sollten, das Ergebnis selbst festzuschreiben ( bearbeitet, um hinzuzufügen: noch schnell vorzuspulen, wenn die Zusammenführung für trivial gehalten wird):
git merge --no-commit --no-ff branch-to-merge
Dann werden Sie git nach der Datei fragen, wie sie in den beiden Zweigen angezeigt wurde:
git show HEAD:filename >filename.HEAD
git show branch-to-merge:filename >filename.branch
und ihre Zusammenführungsbasis,
git show `git merge-base HEAD branch-to-merge`:filename >filename.base
Sie werden sie mit einem beliebigen Tool zusammenführen (z.
meld filename.{HEAD,branch,base}
Sie werden das ( git add filename
) inszenieren und dann die Zusammenführung ( git commit
) festschreiben .
git merge --no-commit branch
und es wurde schließlich zusammengeführt ... Ich möchte, dass ich 3 oder 2 Dateien habe. Dass ich einen Diff verwenden und alles, was ich will, in diese Datei verschieben könnte.git merge -s ours
, um alles so zu belassen, wie es sich in der aktuellen Verzweigung befindet. Dann müssen Sie jedoch sicherstellen, dass Änderungen in anderen Dateien vorgenommen werden.git merge --no-commit --no-ff
wird überhaupt nichts begehen, siehe @ Brad-O Antwort unten. Sie müssen einschließen--no-ff
Am einfachsten ist es
git merge <other_branch
danngit mergetool
, die Konflikte grafisch zu lösen. Informationen zum Einrichten von mergetool finden Sie unter # 10935226.Das Problem ist, dass Ihre geänderte Datei möglicherweise schnell mit der älteren Datei zusammengeführt wird. Dann muss man etwas schlauer werden.
Novelocrat bietet eine großartige Möglichkeit, etwas tiefer zu graben, aber Sie müssen häufig den ursprünglichen Befehl in ändern,
git merge --no-commit --no-ff <other_branch>
da --no-commit wirklich bedeutet "Übernehmen Sie die Zusammenführung nicht ... es sei denn, es handelt sich um eine Schnellvorlauf-Zusammenführung". Es ist ein bisschen wie ein Stachel für viele Leute, die versuchen, genau das zu tun, was Sie wollen.Manchmal ist der am wenigsten verwirrende Weg nicht sehr elegant: Überprüfen Sie den anderen Zweig in einer anderen Arbeitskopie, verwenden Sie Ihr bevorzugtes Zusammenführungstool, um die gewünschte Version in das gewünschte Verzeichnis zu bringen, und legen Sie sie fest.
quelle
Nach diesem Kern, wo Temp ein bestehender Zweig sein könnte.
https://gist.github.com/katylava/564416
Auf dem Meister:
Auf temp:
… Was alles inszeniert, also:
Fügen Sie dann die gewünschten Teile hinzu:
quelle
git commit
führt keine Zusammenführung durch! - Wie beende ich die Zusammenführung am Ende?patch
Option vongit add --interactive
, mit der Sie Teile eines Diff inszenieren können, wie im Git-Buch beschrieben .Aus dem Zweig, in den Sie zusammenführen möchten:
Dadurch wird branch_to_merge nicht ausgecheckt, sondern Sie können interaktiv Hunks aus dem Patch (diff) hinzufügen.
http://git-scm.com/docs/git-checkout
quelle
Sie können einfach WinMerge , DiffMerge oder ein verfügbares Diff / Merge-UI-Tool verwenden, um die Arbeit manuell auszuführen . Wenn Sie es in "git difftool" einbinden möchten, können Sie online nach Möglichkeiten suchen, wie diese Tools mit git funktionieren.
quelle
Der beste Weg, dies zu tun, ist:
quelle