使用git flow,如何在混合中使用rebase

使用git flow,如何在混合中使用rebase,git,github,Git,Github,我是新来的。我已经习惯了这种方法,我从主/开发分支分支分支出来,做我的工作,在github上打开一个pull请求,然后它被合并,我们继续前进。效果很好 其他人正在做重定,但我想尝试一下。例如,我已经读过了,当我明白了这个想法时,有一点让我困惑 在git flow中,当我对分支进行更改时,我将该分支推送到服务器并打开一个拉请求。在重基中,根据上面的链接,我被告知定期将功能分支重基到目标分支的当前状态 …如果我这么做了,我该怎么推github?我所基于的分支,(development在我的案例中)?

我是新来的。我已经习惯了这种方法,我从主/开发分支分支分支出来,做我的工作,在github上打开一个pull请求,然后它被合并,我们继续前进。效果很好

其他人正在做重定,但我想尝试一下。例如,我已经读过了,当我明白了这个想法时,有一点让我困惑

在git flow中,当我对分支进行更改时,我将该分支推送到服务器并打开一个拉请求。在重基中,根据上面的链接,我被告知定期将功能分支重基到目标分支的当前状态

…如果我这么做了,我该怎么推github?我所基于的分支,(
development
在我的案例中)?作为一个git flow的家伙,我觉得很奇怪,但可能是因为我不习惯


如果有其他关于如何从git流到做重定基址的想法,我也很高兴听到

要定期将功能分支重设为目标分支的当前状态(在本场景中,我假设为origin/master),只需从功能分支执行以下操作:

git fetch origin            # Updates origin/master
git rebase origin/master    # Rebases current branch onto origin/master
一个等效的替代方案:

git pull --rebase origin master

通过这样做,您将使要素分支与原始/主分支保持最新。您可以将其合并到本地主存储库中并推送到origin/master,也可以将重定基础的功能分支推送到远程存储库中,然后执行一个pull请求。这实际上取决于您的git工作流。

假设您的功能分支如下所示

* -- * -- A (master)
           \
            * -- * -- * (feature)
一段时间后,其他人已经完成了
master
的工作,这样历史记录就变得

* -- * -- A -- B -- C -- D -- E (master)
           \
            * -- * -- * (feature)
feature
重定基址到
master
的唯一作用是在创建
feature
分支时进行更改:

* -- * -- A -- B -- C -- D -- E (master)
                               \
                                * -- * -- * (feature)

通过定期执行此操作,可以在潜在的合并冲突堆积之前解决这些冲突。如果您定期将主机合并到功能中,您最终会在
功能中遇到大量虚假的合并提交。使用rebase,您可以避免它们,因为当您最初从
master
分支
feature
时,您会忽略它们的价格。请记住,只有在尚未按下
功能
时,才应重新设置基址;一旦您这样做了,您就已经与其他人共享了
功能的历史,不应该更改它。

谢谢您。然而,有一个问题,可能是我的无知——如果我重新基址到主分支上,为什么我要推动我的特性分支?这与我在git flow中所做的不一样吗?在master上重新设置的额外(多余的)步骤?重新设置只会更改特性分支的历史;它不会使其在
主控
中可见。你仍然需要把它推给别人看;在我的解决方案中,您正在将master重定基址到您的功能分支上。此时,您的本地主机不知道您的新提交,但您的功能分支知道所有主机提交和新添加的提交。如果您的工作流程涉及推送分支和使用拉请求,这是一个很好的方法。感谢您的解释……如果我没有弄错的话,“将
功能
重定到
主功能
”实际上意味着调整功能分支,而不是主功能分支——这正是我感到困惑的地方。对吗。如果
feature
是“基于”的,那么重定基址到
master
会使它“基于”主控码。对于gitflow,通常一个特性由一个开发人员处理,因此重定基址并强制将历史推到原点是可以的。