gpt4 book ai didi

git - 在单个沿袭中 rebase 多个分支的最简单方法

转载 作者:太空狗 更新时间:2023-10-29 12:55:15 24 4
gpt4 key购买 nike

我有两个分支位于上游/master 之上。一个分支以另一个为祖先,因此它们形成一条线。

U1 (upstream/master)
\
A -- B (fixes)
\
C -- D (features)

后来upstream/master往前走...

U1 -- U2 (upstream/master)
\
A -- B (fixes)
\
C -- D (features)

...我想在顶部重新设置两个分支。

U1 -- U2 (upstream/master)
\
A' -- B' (fixes)
\
C' -- D' (features)

我知道两种方法,每种方法都有缺点。

git rebase upstream/master fixes
git rebase fixes features

这两个命令有时会起作用,有时会在第二个命令上给我带来 merge 冲突。

git rebase upstream/master features
# figure out the hash code of the new commit corresponding with B'
git branch -f fixes <sha of B'>

这只涉及一个 rebase,但是移动分支是乏味且容易出错的。

我查看了 rebase --preserve-merges,但这似乎不适用,因为没有 merge 提交。

有没有更好的方法来完成 rebase ?

最佳答案

避免 merge 冲突的一种方法是将分支从预 rebase 历史移动到后 rebase 历史。这确实很糟糕,因为它需要找出每个提交的新版本,但可能比不必要的 merge 更快。

例如。

git rebase upstream/master 特性

U1 -- U2 (upstream/master)
\
A' -- B'
\
C' -- D' (features)

git branch -f fixes (SHA for B') # 改变分支指向的位置。

U1 -- U2 (upstream/master)
\
A' -- B' (fixes)
\
C' -- D' (features)

关于git - 在单个沿袭中 rebase 多个分支的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618852/

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