Was sind die Merge-Strategien von git? [duplicate]
Lesezeit: 4 Minuten
K2xL
Mögliches Duplikat:
Wann würden Sie die verschiedenen Git-Merge-Strategien verwenden?
Wenn Git Dateien zusammenführt, an denen ich arbeite, sehe ich:
Merge made by the 'recursive' strategy
Was genau ist die rekursive Strategie? Welche anderen Strategien gibt es (falls vorhanden)? Und was wäre der Vorteil, wenn man sie übereinander verwendet? Haben unterschiedliche Strategien unterschiedliche Leistungen? Oder könnten zwei unterschiedliche Strategien zu unterschiedlichen Zusammenführungsergebnissen führen?
Ein gutes Community-Wiki wurde hier gestartet: stackoverflow.com/questions/366860/…
– Chris Messbuch
9. Januar 2013 um 17:54 Uhr
Dies ist KEINE doppelte Frage. Der Benutzer fragt, was die Algorithmen sind, was nicht dasselbe ist, wie wann würden Sie sie verwenden. An diesen Stellen werden Algorithmen näher erläutert: REKURSIVE STRATEGIE: codicesoftware.blogspot.com/2011/09/… TEILBAUM ZUSAMMENFÜHREN: git-scm.com/book/en/Git-Tools-Subtree-Merging @Chris Missal: Nichts für ungut gemeint, aber der Community-Wiki-Kommentar oben enthält den gleichen Link wie das Feld “Mögliches Duplikat” oben, mit weniger Erklärung, und ist daher nur Lärm.
– SteveS
23. August 2013 um 18:29 Uhr
Mein Kommentar wurde gepostet, bevor er als Duplikat markiert wurde. Ich habe nur versucht, der Frage einige verwandte Informationen hinzuzufügen. -_Ö
– Chris Messbuch
23. August 2013 um 19:53 Uhr
Dies ist kein Duplikat … die andere Frage ist, wann Sie sie verwenden würden, und es wird davon ausgegangen, dass Sie bereits wissen, was sie sind. Ich will wissen, was zum Teufel sie sind!
– Nick Manning
11. Juni 2015 um 21:52 Uhr
Dies ist eine doppelte Frage. Überprüfen Sie dieses hier: stackoverflow.com/questions/55998614/…
– Jayprakash Dubey
20. Januar 2020 um 7:17 Uhr
Aus git help merge:
The merge mechanism (git-merge and git-pull commands) allows the
backend merge strategies to be chosen with -s option. Some strategies
can also take their own options, which can be passed by giving
-X<option> arguments to git-merge and/or git-pull.
resolve
This can only resolve two heads (i.e. the current branch and
another branch you pulled from) using a 3-way merge algorithm. It
tries to carefully detect criss-cross merge ambiguities and is
considered generally safe and fast.
recursive
This can only resolve two heads using a 3-way merge algorithm. When
there is more than one common ancestor that can be used for 3-way
merge, it creates a merged tree of the common ancestors and uses
that as the reference tree for the 3-way merge. This has been
reported to result in fewer merge conflicts without causing
mis-merges by tests done on actual merge commits taken from Linux
2.6 kernel development history. Additionally this can detect and
handle merges involving renames. This is the default merge strategy
when pulling or merging one branch.
The recursive strategy can take the following options:
ours
This option forces conflicting hunks to be auto-resolved
cleanly by favoring our version. Changes from the other tree
that do not conflict with our side are reflected to the merge
result.
This should not be confused with the ours merge strategy, which
does not even look at what the other tree contains at all. It
discards everything the other tree did, declaring our history
contains all that happened in it.
theirs
This is opposite of ours.
subtree[=path]
This option is a more advanced form of subtree strategy, where
the strategy makes a guess on how two trees must be shifted to
match with each other when merging. Instead, the specified path
is prefixed (or stripped from the beginning) to make the shape
of two trees to match.
octopus
This resolves cases with more than two heads, but refuses to do a
complex merge that needs manual resolution. It is primarily meant
to be used for bundling topic branch heads together. This is the
default merge strategy when pulling or merging more than one
branch.
ours
This resolves any number of heads, but the resulting tree of the
merge is always that of the current branch head, effectively
ignoring all changes from all other branches. It is meant to be
used to supersede old development history of side branches. Note
that this is different from the -Xours option to the recursive
merge strategy.
subtree
This is a modified recursive strategy. When merging trees A and B,
if B corresponds to a subtree of A, B is first adjusted to match
the tree structure of A, instead of reading the trees at the same
level. This adjustment is also done to the common ancestor tree.
Das ist noch nicht ganz klar. Kann das jemand etwas klarer erklären?
– reneruiz
4. April 2014 um 1:48 Uhr
Handbuchseiten / Hilfeausgaben sind großartig, wenn Sie den Kontext verstehen und eine Auffrischung wünschen. Wenn Sie mit dem Thema nicht vertraut sind, können sie obskur und wenig hilfreich sein
– Basic
25. September 2015 um 22:14 Uhr
Die beste Erklärung, die ich finden konnte, ist hier stackoverflow.com/a/366940/536434
– Briankip
19. Mai 2017 um 9:17 Uhr
12977100cookie-checkWas sind die Merge-Strategien von git? [duplicate]yes
Ein gutes Community-Wiki wurde hier gestartet: stackoverflow.com/questions/366860/…
– Chris Messbuch
9. Januar 2013 um 17:54 Uhr
Dies ist KEINE doppelte Frage. Der Benutzer fragt, was die Algorithmen sind, was nicht dasselbe ist, wie wann würden Sie sie verwenden. An diesen Stellen werden Algorithmen näher erläutert: REKURSIVE STRATEGIE: codicesoftware.blogspot.com/2011/09/… TEILBAUM ZUSAMMENFÜHREN: git-scm.com/book/en/Git-Tools-Subtree-Merging @Chris Missal: Nichts für ungut gemeint, aber der Community-Wiki-Kommentar oben enthält den gleichen Link wie das Feld “Mögliches Duplikat” oben, mit weniger Erklärung, und ist daher nur Lärm.
– SteveS
23. August 2013 um 18:29 Uhr
Mein Kommentar wurde gepostet, bevor er als Duplikat markiert wurde. Ich habe nur versucht, der Frage einige verwandte Informationen hinzuzufügen. -_Ö
– Chris Messbuch
23. August 2013 um 19:53 Uhr
Dies ist kein Duplikat … die andere Frage ist, wann Sie sie verwenden würden, und es wird davon ausgegangen, dass Sie bereits wissen, was sie sind. Ich will wissen, was zum Teufel sie sind!
– Nick Manning
11. Juni 2015 um 21:52 Uhr
Dies ist eine doppelte Frage. Überprüfen Sie dieses hier: stackoverflow.com/questions/55998614/…
– Jayprakash Dubey
20. Januar 2020 um 7:17 Uhr