Git 2.36 schlägt einen einfacheren Befehl vor:
git rev-parse $(git rev-list --exclude-first-parent-only A ^master| head -1)^
git rev-list --exclude-first-parent-only A ^master
gibt Ihnen G -- H -- I -- J
head -1
gibt Ihnen G
git rev-parse G^
gibt Ihnen sein erstes Elternteil: A
Mit Git 2.36 (Q2 2022), " git log
" ( man ) und Freunde lernten eine Option --exclude-first-parent-only
um das UNINTERESTING-Bit nur entlang der Kette des ersten Elternteils nach unten zu propagieren, genau wie --first-parent
zeigt Commits, denen das UNINTERESTING-Bit fehlt, nur entlang der Kette der ersten Eltern.
Ver Übergabe 9d505b7 (11. Januar 2022) von Jerry Zhang ( jerry-skydio
) .
(Zusammengefasst von Junio C. Hamano -- gitster
-- en 708cbef übergeben , 17. Februar 2022)
git-rev-list
--exclude-first-parent-only Flag hinzufügen
Abgezeichnet von: Jerry Zhang
Es ist nützlich zu wissen, wann ein Zweig zum ersten Mal in der Geschichte von einem Integrationszweig abgewichen ist, um die lokalen Änderungen des Benutzers aufzählen zu können.
Diese lokalen Änderungen können jedoch beliebige Verschmelzungen beinhalten, so dass diese Verschmelzungsstruktur bei der Ermittlung des Divergenzpunkts ignoriert werden muss.
Um dies zu tun, lehren Sie die " rev-list
" Familie zu akzeptieren " --exclude-first-parent-only
", die schränkt die Durchquerung der ausgeschlossenen Commits ein, um nur den ersten übergeordneten Links zu folgen .
-A-----E-F-G--main
\ / /
B-C-D--topic
In diesem Beispiel ist das Ziel, die Menge {B, C, D
} der einen Themenzweig darstellt, der in main
Zweigstelle.
git rev-list topic ^main
( man ) wird am Ende keine Commits zurückgeben, da der Ausschluss von main
durchläuft am Ende die Commits auf topic
auch.
git rev-list --exclude-first-parent-only topic ^main
( man ) wird jedoch zurückkehren {B, C, D}
wie gewünscht.
Hinzufügen von Dokumenten für das neue Flag und Klarstellung des Dokuments für --first-parent
um anzugeben, dass sie nur für das Durchlaufen der Menge der eingeschlossenen Commits gilt.
rev-list-options
umfasst nun in seinem Manpage :
--first-parent
Bei der Suche nach einzuschließenden Commits folgen Sie nur dem ersten Eltern-Commit, wenn Sie einen Merge-Commit sehen.
Diese Option kann einen besseren Überblick bei der Betrachtung der Entwicklung von eines bestimmten Themenzweigs, da Zusammenführungen in einen Themen Zweig neigen dazu, sich nur an aktualisierte Upstreams anzupassen von Zeit zu Zeit, und diese Option erlaubt Ihnen, die die einzelnen Commits, die durch einen solchen Merge in Ihre Historie einer Zusammenführung.
rev-list-options
umfasst nun in seinem Manpage :
--exclude-first-parent-only
Bei der Suche nach auszuschließenden Commits (mit einem '{caret}'), folgen Sie nur dem ersten übergeordneten Commit, wenn Sie einen Merge-Commit sehen.
Dies kann verwendet werden, um die Menge der Änderungen in einem Themenzweig zu finden ab dem Punkt zu finden, an dem er vom entfernten Zweig abgewichen ist, vorausgesetzt dass beliebige Zusammenführungen gültige Themenzweigänderungen sein können.