Nehmen Sie den folgenden Fall:
Ich habe einige Arbeiten in einem Themenbereich und bin jetzt bereit, wieder zum Master zurückzukehren:
* eb3b733 3 [master] [origin/master]
| * b62cae6 2 [topic]
|/
* 38abeae 1
Ich führe die Zusammenführung vom Master durch, löse die Konflikte und jetzt habe ich:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | eb3b733 3 [origin/master]
|/
* 38abeae 1
Jetzt hat die Zusammenführung einige Zeit in Anspruch genommen, sodass ich einen weiteren Abruf durchführe und feststelle, dass der Remote-Master-Zweig neue Änderungen aufweist:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
| | * e7affba 4 [origin/master]
| |/
|/|
* | eb3b733 3
|/
* 38abeae 1
Wenn ich 'git rebase origin / master' von master versuche, bin ich gezwungen, alle Konflikte erneut zu lösen, und ich verliere auch das Merge-Commit:
* d4de423 2 [master]
* e7affba 4 [origin/master]
* eb3b733 3
| * b62cae6 2 [topic]
|/
* 38abeae 1
Gibt es eine saubere Möglichkeit, das Zusammenführungs-Commit neu zu definieren, damit ich einen Verlauf wie den unten gezeigten erhalte?
* 51984c7 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | e7affba 4 [origin/master]
* | eb3b733 3
|/
* 38abeae 1
git config --global pull.rebase preserve
um die Merge Commits während einer Rebase immer zu bewahren
git --rebase-merges
wird letztendlich das alte ersetzt git --preserve-merges
. Siehe Was genau machtrebase --preserve-merges
--preserve-merges
ist veraltet. Verwenden Siegit rebase --rebase-merges origin/master
git rebase --preserve-merges origin/master