在root上重新生成并保持空提交

eus*_*h77 11 git

假设我有一个由三个提交组成的分支,其中一个是空的:

# On branch test
3208910 empty
85c949c bar
0c1a615 foo
Run Code Online (Sandbox Code Playgroud)

我想在根页面上重新定义它,从man页面看来,这--root --keep-empty正是我需要的.

然而,无论git rebase -i --rootgit rebase -i --root --keep-empty省略空承诺,让我看看这个计划,而不是:

pick 0c1a615 foo
pick 85c949c bar
Run Code Online (Sandbox Code Playgroud)

如何重新绑定整个分支并同时保留空提交?

PS我需要这个去除分支上的一些第一次提交,我设法通过这个SO答案中filter-branch描述的实现,但我仍然有兴趣知道是否能够做到这一点.我发现它是Git中的一个错误吗?很难相信这种行为是故意的,但我不确定.rebase

PPS我发现我可以手动编辑计划并添加pick 3208910.

pet*_*ulc 1

它与 的两种模式相关git rebase

补丁 ID方法应保留空提交,并且是默认行为。

然而,正如正确指出的那样,--rootflag 是“onto NULL”的快捷方式,这会触发分叉点模式。

更多信息可以从以下内容推断: