使用git v1.7.1我正在尝试同时使用--preserve-merges和--onto功能进行rebase .最终结果似乎没有合并提交,因此看起来是线性的.我宁愿保留合并提交,原因与人们经常使用的相同--preserve-merges(更容易看到逻辑上属于单独功能并在其自己的分支中开发的提交组).
我的主分支(rebase的目的地)很无聊:
A-B-C
我想要的功能分支有一个已合并到其中的子功能分支.喜欢:
X - Y
/ \
V-W ------ Z
Run Code Online (Sandbox Code Playgroud)
其中Z是合并提交,它是要从中获取的要素分支的头部,并且X和Y位于子要素分支上.
我正在使用: git rebase --preserve-merges --onto C V Z
我想最终得到:
X - Y
/ \
A-B-C-W ------ Z
Run Code Online (Sandbox Code Playgroud)
但相反,我得到:
A-B-C-W-X-Y
Run Code Online (Sandbox Code Playgroud)
由于Z是一个无冲突的合并,代码的最终状态是正确的,但历史并不像我想的那样具有表现力.
有没有办法得到我想要的东西?
编辑地址@Bombe:我写了一个bash脚本来构建我的例子.在我的系统(RHEL 6.2 with git 1.7.1)上,这证明了我的问题.
#! /bin/bash
# start a new empty repo
git init
# make some commits on the master branch
git checkout master
touch A.txt; git add A.txt; git commit -m "add A.txt"; git …Run Code Online (Sandbox Code Playgroud)