这应该可以解决问题。由于我们正在挑选提交消息,因此作者和作者日期将与原始提交相同,包括合并。
或者,您可以通过在第一个条件中添加以下行来获取合并之前对分支(即合并的第二个父级)的最后一次提交的提交消息和作者信息:
git commit --amend -C $(git rev-parse $rev^2)
如果您经常这样做,这些命令可以很容易地转换为脚本。
签出基本提交(处于分离状态):
git checkout A~0
樱桃挑选所有提交:
for rev in $(git rev-list HEAD..branch-name --first-parent --reverse)
do
if [[ $(git show --summary --format="%P" $rev | wc -w ) -gt 1 ]]
then
git cherry-pick $rev --mainline 1
# git commit --amend -C $(git rev-parse $rev^2)
else
git cherry-pick $rev
fi
done
强制旧分支和结帐:
git branch -f branch-name HEAD
git checkout branch-name