这听起来像你可能想作出比其他主分支的提交,然后分支合并到主,你的第二个分支:
git checkout working-branch
<do some work>
git commit
git checkout master
git merge working-branch
git checkout second-branch
git merge working-branch
这是多少,比cherry-好得多因为它不涉及在历史记录中重复提交,因此摆脱了有关挑选提交两次(您目前必须手动避免)的任何问题......并且只是git旨在用于工作的方式。我不知道你的第二个分支是什么,但我所描述的基本上是将维护和主题分支定期合并回主以及任何其他适当的修改版本或维护分支的常见工作流程。
我强烈建议你采用地方,这是通过如我上面描述的合并做了工作流程,但回答你问的问题,如果你绝对必须掌握和樱桃挑选工作,你可能要自己写小脚本,像这样:
#!/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
显然有办法使脚本更健壮,例如增加了补丁无法正确应用的樱桃挑选后恢复的能力,但这只是一个开始。
当然,你可以使用git-rev-list来选择提交的方式。你甚至可以将除了第一个参数以外的所有参数传递给git-rev-list,这样你就可以做cherries-pick <branch> -n 5 master
或cherries-pick <branch> release_tag..master
或任何你想要的。看看它的man page!
您还可以使用git-rebase
正如其他地方的建议,而是因为你实际上并没有想移动的主人,你最终会做这样的事情:
git branch master-copy master
git rebase --onto <branch> master~5 master
git checkout <branch>
git merge master-copy
git branch -d master-copy
非常令人印象深刻,谢谢! – 2009-09-01 06:33:42