Git Cherry-Pick¶
git cherry-pick ermöglicht euch, beliebige Git-Commits anhand ihres
Hash-Wertes dem aktuellen HEAD anzuhängen. Beim Cherry-Picking wird ein
Commit aus einem Branch ausgewählt und auf einen anderen angewendet, z.B.:
$ git checkout 3.10
$ git cherry-pick 61de025
[3.10 b600967] Fix bug #17
Date: Thu Sep 15 11:17:35 2022 +0200
1 file changed, 9 insertions(+)
Dabei kann git cherry-pick mit verschiedenen Optionen eingesetzt werden:
--edit,-eübernimmt nicht die bestehende Commit-Nachricht sondern ermöglicht euch, eine eigene Commit-Nachricht für diesen Cherry-Pick zu erstellen.
--no-commit,-nerstellt keinen neuen Commit sondern verschiebt die Inhalte des Commits in das Arbeitsverzeichnis.
--signoff,-sfügt am Ende der Commit-Nachricht eine Signaturzeile mit
Signed-off-byhinzu.
git cherry-pick akzeptiert auch Optionen zum Beheben von Merge-Konflikten,
darunter --abort, --continue und --quit.
git cherry-pick kann hilfreich sein, um Änderungen rückgängig zu machen,
wenn beispielsweise ein Commit versehentlich für den falschen Branch
durchgeführt wurde, könnt ihr zu dem Branch wechseln, in dem die Änderung
eigentlich vorgenommen weerden sollte, und den Commit dann per Cherry-Pick auf
diesen Branch übertragen.
Beim Cherry-Picking entstehen jedoch üblicherweise doppelte Commits, und in
vielen Fällen bevorzugen wir daher eher Git Merges. Dennoch kann sich git
cherry-pick für einige Szenarien sehr gut eignen, z.B.
für Release-Branches-Workflows.
git range-diff¶
git range-diff zeigt die Differenz
zwischen zwei Commit-Bereichen an, d.h., welche Commits
zwischen diesen Bereichen gleich sind oder sich geändert haben. Dieser Befehl
kann z.B. beim Überprüfen helfen, welche Commits mit
git cherry-pick auf welche Zweige verteilt wurden.