我有一个这样的分支:
A---B---B1---B2---D---E---E1---E2---G---H
\ / \ /
C1---C2---’ F1---F2---’
我想重写它,使它像这样:
A---B---B1---B2---D---E---E1---E2---G---H
这意味着,挤压所有合并。
分支很长。如何自动完成?
编辑
这不是历史记录线性化。我要压缩所有合并,例如D和G。
这应该可以解决问题。由于我们选择的是提交消息,因此作者和作者日期将与原始提交(包括合并)相同。
或者,您可以通过将以下行添加到第一个条件中来获取合并之前从上次提交到分支的提交的消息和作者信息,即合并的第二个父对象:
git commit --amend -C $(git rev-parse $rev^2)
如果经常执行这些命令,则可以轻松地将其转换为脚本。
签出基本提交(处于分离状态):
git checkout A~0
Cherry选择所有提交:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句