如何在强制推送基础分支后更新我的功能分支。我们只使用rebase,禁止合并

Jos*_*eon 4 git rebase git-push git-history git-history-rewrite

我们正在使用 git 中的一个非常简单的结构。

首先我们有我们的master分行。

下面我们有develop

最后我们可以拥有任何feature分支

我们仅使用 rebase 来更新分支上的历史记录,然后转发到上述分支。

每周,我们的develop分支都会更新一些features. 这个分支被重新定位并合并到 master 中(从developmaster)。

问题

当我们变基并合并develop到时master,有时会出现冲突,我必须通过master在我的develop分支中执行变基来修复它们。解决冲突后,我执行git push --force-with-lease将更改上传到远程。

在此过程之后,由于强制推送,开发的历史已被更改。

问题在于,当另一位开发人员正在feature基于develop强制推送之前(develop强制推送之前)的分支进行工作时。

我们如何feature使用新的develop分支历史记录来更新该开发人员的分支。git rebase develop 因为,在我们的分支机构内部进行操作时feature。我们最终会产生很多冲突。

LeG*_*GEC 5

如果我理解正确的话,开发者是这样的情况:

--*--x--*--m <- master
      \
       \
        *--*--f <- develop
               \
                a--b--c <- feature
Run Code Online (Sandbox Code Playgroud)

在他获取更新后,他到达:

--*--x--*--m <- master
      \     \
       \     *--*--f' <- develop
        *--*--f
               \
                a--b--c <- feature
Run Code Online (Sandbox Code Playgroud)

a, b, c要仅在 之上重播develop,请应用 @Vitali 建议的命令:

  • 点提交:和f之间的原始分叉点,featuredevelop
  • 跑步 :git rebase --onto develop <f> feature

如果一切顺利的话,他会达到以下状态:

--*--x--*--m <- master
            \
             *--*--f' <- develop
                    \
                     a'--b'--c' <- feature

# only 'a--b--c' are replayed from the original 'feature' branch,
# not '*--*--f'
Run Code Online (Sandbox Code Playgroud)