git rebase
是否有一个简单的选项说:“重写此历史记录,自动解决所有冲突,使得在rebase之后HEAD的内容将保持不变它现在是“?
我有一个功能分支,我已合并到主人;基本上我想重做那个作为主人的基础。
我认为-X ours
可能是那个选项,但结果却是不同的内容。
答案 0 :(得分:2)
据我了解,你想要的并不完全是合并或变基。这更像是一个切入点。您已将master合并到您的功能中,因此您知道您希望生成的树是什么。
用git术语来说,这意味着您希望新提交使用与功能分支头相同的树。假设您的功能分支名为my-feature,那么您可以使用my-feature^{tree}
直接处理该提交的树根。
您需要一个新的提交,其父级是您的父级,其树重用已存在于您的存储库中的一个。管道命令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并将其合并到本地主服务器。 --ff-only
是一种故障保险并表达我们的意图。由于将master命名为-p
的父级,新提交将是一个快速构建。
-C
的{{1}}选项允许您重用来自另一个提交的提交消息,在上述情况下是您的功能分支的负责人。