是否有一个简单的选项git rebase
说:“重写这段历史,以这样的方式自动解决所有冲突,使变基后 HEAD的内容与现在保持一致”?
我有一个功能分支,我已经合并到 master 中;本质上,我想重做它作为对master的rebase。
我认为这-X ours
可能是那个选项,但结果是不同的内容。
是否有一个简单的选项git rebase
说:“重写这段历史,以这样的方式自动解决所有冲突,使变基后 HEAD的内容与现在保持一致”?
我有一个功能分支,我已经合并到 master 中;本质上,我想重做它作为对master的rebase。
我认为这-X ours
可能是那个选项,但结果是不同的内容。
据我了解,您想要的并不完全是合并或变基。这更像是一个切入点。您已经将 master 合并到您的功能中,因此您知道您想要生成的树是什么。
在 git 术语中,这意味着您希望您的新提交使用与功能分支的头部相同的树。假设您的功能分支被命名为 my-feature,那么您可以直接使用my-feature^{tree}
.
你想要一个新的提交,它的父级是你的主节点,并且它的树重用了你存储库中已经存在的提交。管道命令git commit-tree
让您可以进行这种精细的控制。
$ git结账大师 $ 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 并将其合并到您的本地主服务器中。这--ff-only
是一种故障保险,并表达我们的意图。由于将 master 命名为其父级,因此新提交将是一个快速构建-p
。
允许您重用来自另一个提交的提交消息的-C
选项,git commit
在上述情况下是您的功能分支的负责人。