gpt4 book ai didi

git - rebase 树(提交/分支及其所有子节点)

转载 作者:IT王子 更新时间:2023-10-29 01:29:29 25 4
gpt4 key购买 nike

<分区>

这是我当前的 git 树:

A - H (master)
|
\- B - C - D - E (feature)
|
\- F (new)
|
\- G (other)

我想重新设置侧分支的基数,使其依赖于 H 而不是 A:

A - H (master)
|
\- B'- C'- D'- E'(feature)
|
\- F'(new)
|
\- G'(other)

看似简单的概念,却很难自动完成。这个已经有人问了herehere ,但建议的解决方案对我不起作用。

首先,正如前文所指出的,当当前分支存在时,git branch 输出的解析并不容易(有一个 * 前缀)。但这不是障碍,在我的例子中,我可以轻松地手动提供名称 featurenewother,或者确保当前分支是 master

然后我尝试了这些命令:

git rebase --committer-date-is-author-date --preserve-merges --onto master feature^ feature
git rebase --committer-date-is-author-date --preserve-merges --onto master feature^ new
git rebase --committer-date-is-author-date --preserve-merges --onto master feature^ other

我最终得到:

A - H (master)
|
\- E'(feature)
|
\- B' - C' - D' - F'(new)
|
\- B" - C" - D" - G'(other)

绝对不是我想要的!或者,如果我使用 B^ 而不是 feature^,那么我还会在 feature 中获得 B - C - D 历史记录 分支。

那么,关于如何或多或少地自动完成这项工作,还有什么建议吗?

编辑:它有点像这样:

git checkout feature
git merge other
git merge new
git rebase -p master feature

现在至少树看起来是正确的,我只需要在 merge 之前将分支头移动到它们正确的提交...这可以通过以下方式完成:

git checkout master
git branch -f new feature^2
git branch -f feature feature^1
git branch -f other feature^2
git branch -f feature feature^1

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