Ich bin Meister und habe es getan rebase -i <my_branch>
Verstanden:
noop
# Rebase c947bec..7e259d3 onto c947bec
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x <cmd>, exec <cmd> = Run a shell command <cmd>, and stop if it fails
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Ich möchte einige Commits auswählen, nicht alle, da einige von ihnen nicht willkommen sind. Wie arbeiten Sie auch, wenn Sie einige Dateien oder Änderungen in einem Zweig immer "lokal" behalten möchten? Gibt es einen Helfer wie .gitignore
?
HEAD~*
Syntax hat bei mir funktioniert, die erste jedoch nicht.rebase -i
Ohne Commit-Bereich werden keine Commits angezeigt. Verwenden Sie Folgendes, um die letzten 7 Commits neu zu starten:Seien Sie jedoch vorsichtig, dass dies die Geschichte neu schreibt. Tun Sie es nicht, wenn die Commits bereits gepusht sind
Ihre zweite Frage: einen Zweig mit Änderungen haben (im Grunde eine Konfigurationszweig) und regelmäßig die anderen Zweige verschmelzen in ihm. Auf diese Weise werden die Änderungen nicht in andere Zweige verschoben
quelle
Wenn Sie verwenden
git rebase -i
, müssen Sie normalerweise angeben, für welches Commit Sie die Rebase durchführen möchten. Wenn Sie beispielsweise einige der Commits unter den letzten 10 für den aktuellen Zweig entfernen möchten, gehen Sie wie folgt vor:quelle
Wie bereits erwähnt, müssen Sie einen Festschreibungsbereich angeben.
(Angenommen, Sie befinden sich im selben Zweig wie das zu bearbeitende Commit.) -
Um die Commits anzugeben, können Sie die Abkürzungen HEAD ~ 5 oder die sha-Prüfsumme verwenden (die Sie erhalten können
git log
).Tatsächlich funktioniert jedes Commit, wenn es Vorgänger / Vorfahr der Commits ist, die Sie im Baum löschen / bearbeiten / umformulieren möchten. Dadurch werden alle Commits seit dem aufgelistet
<latest-commit-to-be-retained>
im Editor auf (definiert in Ihrer Git-Konfiguration). Um ein Commit aus der Liste zu löschen, löschen Sie einfach diese bestimmte Zeile, speichern und beenden Sie (vi habbits :)) die Datei + den Editor und tun Sie diesgit rebase --continue
Bei der zweiten Antwort stimme ich knittl zu
quelle