gpt4 book ai didi

git - 如何压缩分支中的所有 merge ?

转载 作者:太空狗 更新时间:2023-10-29 14:13:14 25 4
gpt4 key购买 nike

我有一个这样的分支:

A---B---B1---B2---D---E---E1---E2---G---H
\ / \ /
C1---C2---’ F1---F2---’

我想改写成这样:

A---B---B1---B2---D---E---E1---E2---G---H

这意味着,压缩所有 merge 。

Twig 很长。这怎么能自动完成?

编辑

这不是历史线性化。我想压缩所有 merge ,例如 D 和 G。

最佳答案

这应该可以解决问题。由于我们正在挑选提交消息、作者和作者日期将与原始提交相同,包括 merge 。

或者,您可以通过将以下行添加到第一个条件来获取 merge 前分支的最后一次提交的提交消息和作者身份信息,即 merge 的第二个父级:

git commit --amend -C $(git rev-parse $rev^2)

如果您经常这样做,这些命令可以很容易地转换为脚本。

checkout 基本提交(处于分离状态):

git checkout A~0

cherry-pick 所有提交:

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

强制旧分支和 checkout :

git branch -f branch-name HEAD
git checkout branch-name

关于git - 如何压缩分支中的所有 merge ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26576291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com