启用快进选项的git重基

启用快进选项的git重基,git,git-merge,git-rebase,fast-forward,Git,Git Merge,Git Rebase,Fast Forward,假设我遇到这样的情况: a -- b -----------------c -- d -- e <-- Master \ f ------------l <-- Branch1 \ / g -- h -- i <-- Branch2 好了,现在我想把分支1的重新基址设置为主节点 如果使用git-rebase-master-Bran

假设我遇到这样的情况:

a -- b -----------------c -- d -- e   <-- Master
      \
       f ------------l                <-- Branch1
        \           /
         g -- h -- i                  <-- Branch2
好了,现在我想把
分支1
重新基址设置为
主节点

如果使用
git-rebase-master-Branch1
,结果是:

a -- b -- c -- d -- e                     <-- Master
                     \
                       f -- g -- h -- i   <-- Branch1

我在网上(包括stackoverflow)找不到任何有用的信息。

解决方案

git-rebase
-p
选项旨在解决此问题

这应该起作用:

git rebase -p master Branch1
从git rebase-h
开始:

-p, --preserve-merges
                      try to recreate merges instead of ignoring them
注意事项

感谢@andree指出这些问题,记录在
git-rebase--help
中:

  • 合并冲突解决方案或合并提交的手动修改不保留
  • --preserve merges
    --interactive
    相结合通常不是一个好主意

@地址不,对不起。情况似乎不同,从那里的答案来看,一切都很混乱。我无法从你提出的答案中获得有用的信息。你能?我的问题的解决方案是什么?答案是这样写的:“git rebase在您的情况下没有意义。它只接受您的提交并将它们添加到新的基中。在您的情况下,旧的基似乎与新的基完全相同,因此结果与以前完全相同。(只缺少合并提交)。”尝试
git-rebase-p
:从
git-rebase-h
:-p,--preserve merges尝试重新创建合并,而不是忽略它们。注意:
git-rebase
没有ff选项,但它的含义非常不同。您需要
--保留合并
-p
;或者,如果您的Git足够新,那么花哨的新
--rebase合并了
功能。看……努力。我需要再次克隆项目看起来是解决问题的一个不错的选项,但也许你也应该提到与此相关的问题,例如“合并冲突解决方案或手动修改合并提交未被保留”。“[…]将其与--interactive选项显式结合通常不是一个好主意[…]”@adree,这是否意味着重基将成功终止,但合并冲突将被忽略?@Leos313:不幸的是,我没有这方面的经验,这要归功于joanis。但是,这本书中似乎有一些有用的信息。很抱歉,它不起作用。它给出“错误:无法应用…
commit\u name
git rebase -p master Branch1
-p, --preserve-merges
                      try to recreate merges instead of ignoring them