1

是否有一个简单的选项git rebase说:“重写这段历史,以这样的方式自动解决所有冲突,使变基后 HEAD的内容与现在保持一致”?

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

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

4

1 回答 1

3

据我了解,您想要的并不完全是合并或变基。这更像是一个切入点。您已经将 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在上述情况下是您的功能分支的负责人。

于 2013-09-12T18:30:55.500 回答