Nehmen wir an, ich habe einen Themenzweig, dessen gesamte Historie ich neu schreiben möchte, da er ursprünglich vom Master für eine Pull-Anforderung erstellt wurde. Aus irgendeinem Grund ist die Verwendung nicht einfach oder offensichtlich git log
um den Commit-Hash zu bestimmen, an den ich übergeben möchte
git rebase -i <commit>
Ich weiß, dass ich es gebrauchen kann git merge-base <branch1> <branch2 || master>
um den Commit zu finden, von dem zwei Referenzen ihre Vorfahren verfolgen können, und dies verwenden können, um den Commit zu bestimmen. Was ich gerne wissen würde, ist, ob es einen besseren Weg gibt, diesen ganzen Zweig (ob der Meister fortgeschritten ist oder nicht) interaktiv umzubasieren, als zu verwenden
git rebase -i `git merge-base my_branch master`
BEARBEITEN: Ich möchte das übergeordnete Element des ersten Commits, das auf diesem Zweig vorgenommen wurde, nicht ändern git rebase -i master
würde nur in dem Fall funktionieren, in dem beide Master nicht fortgeschritten sind, seit der Zweig erstellt wurde, und der Zweig von dem Commit-Master erstellt wurde, auf den er derzeit zeigt.
Dies ist keine Antwort, sondern ein interessanter Hack, den ich mir ausgedacht habe. Ich habe folgendes in mein .profile eingefügt.
function gri() { git rebase -i `git merge-base $@ master` }
– Aaron
3. Mai 2012 um 14:04 Uhr
Ich konnte nichts besseres finden, aber Sie können ersetzen
my_branch
durchHEAD
.– Konrad
27. Juni 2018 um 5:26 Uhr