gpt4 book ai didi

git - 在不改变内容的情况下 rebase

转载 作者:行者123 更新时间:2023-12-05 03:15:20 25 4
gpt4 key购买 nike

git rebase 是否有一个简单的选项,上面写着:“重写这段历史,自动解决所有冲突,使 HEAD 的 content 在 rebase 之后还是和现在一样”?

我有一个功能分支,我已经 merge 到master;本质上我想重做它作为对 master 的 rebase 。

我认为 -X ours 可能是那个选项,但结果是不同的内容。

最佳答案

据我了解,您想要的不完全是 merge 或 rebase 。这更像是一个切换。您已经将 master merge 到您的功能中,所以您知道您想要生成的树是什么。

在 git 术语中,这意味着您希望新提交使用与功能分支的头部相同的树。假设您的功能分支名为 my-feature,那么您可以使用 my-feature^{tree} 直接寻址该提交的树根。

你想要一个新的提交,它的父节点是你的 master 并且它的树重用了你的存储库中已经存在的一个。管道命令 git commit-tree让您可以进行这种精细的控制。

$ git checkout master$ git merge --ff-only \  $(git commit-tree my-feature^{tree} -p $(git rev-parse master) -m FIXME)$ git commit --amend -C $(git rev-parse my-feature)

git commit-tree 的输出是新提交的 SHA1。 git merge 命令捕获该 SHA1 并将其 merge 到您的本地主机中。 --ff-only 是一种故障保险并表达我们的意图。由于使用 -p 将 master 命名为其父级,因此新提交将通过构建快速推进。

git commit-C 选项允许您重用来自另一个提交的提交消息,在上述情况下是您的功能分支的头部。

关于git - 在不改变内容的情况下 rebase ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771466/

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