Es klingt wie Sie diese Commits auf einem Zweig andere als Master machen möchten, und verschmelzen dann diesen Zweig zu Master und Ihren zweiten Zweig:
git checkout working-branch
<do some work>
git commit
git checkout master
git merge working-branch
git checkout second-branch
git merge working-branch
Das ist viel, viel besser als Kirsch- Kommissionieren, weil es keine Duplizierung von Commits in der History beinhaltet, beseitigt alle Probleme, die sich ergeben, wenn man einen Commit zweimal wiederholt (was man derzeit manuell vermeiden muss) ... und genau so funktioniert Git. Ich weiß nicht, was Ihr zweiter Zweig ist, aber was ich beschreibe, ist im Wesentlichen der übliche Arbeitsablauf des periodischen Zusammenführens von Wartungs- und Themenzweigen zurück in den Master sowie alle anderen geeigneten Änderungsfreigabe- oder Wartungszweige.
Ich empfehle dringend, dass Sie einen Workflow übernehmen, wo dies durch Verschmelzung wie ich oben beschrieben getan wird, aber um die Frage zu beantworten, wenn Sie unbedingt auf Meister und Kirsche-Pick arbeiten müssen, möchten Sie vielleicht selbst schreiben kleines Skript, etwas wie:
#!/bin/bash
# take two arguments:
# 1. other branch to put commits on
# 2. number of commits to cherry-pick from master
if ! git checkout $1; then
exit
fi
git rev-list --reverse -n $2 master |
while read commit; do
if ! git cherry-pick $commit; then
exit
fi
done
Offensichtlich gibt es Möglichkeiten, das Skript robuster zu machen, z Hinzufügen der Fähigkeit, nach Cherry-Picks, deren Patches nicht richtig anwenden, aber es ist ein Anfang.
Sie können mit der Art und Weise, wie Sie git-rev-list verwenden, natürlich die Commits auswählen. Sie könnten sogar alle außer dem ersten Argument an git-rev-list übergeben, so dass Sie cherries-pick <branch> -n 5 master
oder cherries-pick <branch> release_tag..master
oder was auch immer Sie wollen. Werfen Sie einen Blick auf die man page!
Sie auch git-rebase
verwenden können, wie an anderer Stelle vorgeschlagen wurde, sondern weil Sie eigentlich gar nicht Meister bewegen wollen, müssen Sie etwas am Ende wie folgt vorgehen:
git branch master-copy master
git rebase --onto <branch> master~5 master
git checkout <branch>
git merge master-copy
git branch -d master-copy
Viel beeindruckend, danke! –