0

目前我正在维护两个分支。源分支和它的派生。它们必须同步,因为将来它们将被合并。政策是每两周同步/合并分支。如您所见,“前叉”落后 97 米,领先 217 米。

我尝试在 Team explorer 中首先将一个合并到另一个,反之亦然,但它们都是最新的。拉取请求有很多合并冲突。不是问题,因为我会解决它们。但是当两个分支都是最新的时,我该如何解决合并问题。

DevOps 中的状态

4

2 回答 2

1

前后差异大的分支维护和组合的正确策略是什么

恐怕没有这样正确的策略来维护和合并前后差异较大的分支。

当我们合并分支时,代码冲突是不可避免的。如果分支中包含的后面和前面之间存在冲突,我们必须手动解决它。

为了减少解决冲突所花费的时间,我们可以尝试增加开发的敏捷性,将合并周期增加到一周或更短。

于 2020-12-02T05:55:34.603 回答
0

tl;dr:为了维护Fork/development,如果可能的话,我更喜欢变基策略,并在不可能变基的周期中回退到合并策略(可能总是这样)。

这是您典型的两周周期的细分。你总是可以从以下开始:

  1. 合并Fork/developmentdevelopment. 这可能最好通过使用 SCM 的 Pull/Merge Request 来完成,但如果不是,从概念上讲它类似于以下命令:
git checkout development
git pull
git merge --no-ff Fork/development  # resolve conflicts if needed
  1. 现在删除并重新创建Fork/developmentdevelopment以便重新开始。这可以通过这些命令来完成(假设你的遥控器被称为“origin”):
git fetch
git checkout Fork/development
git reset --hard origin/development
  1. 在第 2 步之后,两者developmentFork/development都是等效的(同步)。现在Fork/development使用变基策略或合并策略在接下来的两周内工作。(差异说明如下。)

在您的两周周期中,这里有一些个人偏好,但根据评论,作为唯一承诺的人Fork/development,在我看来,您可以将其视为Fork/development碰巧持续存在的常规功能分支。在这种情况下,我建议使用变基策略使其保持最新状态,直到下一次在两周内development重新合并为止。development如果您能够使用此策略,您的典型一天可能如下所示:

git fetch
git checkout Fork/development
git rebase origin/development # resolve any new conflicts if there are any
# Commit
# Commit
# Commit
# etc.

请注意,这仅在您没有Fork/development需要保留的任何新合并提交时才有效,但如果您直接提交到分支中,则通常不会进行合并。只需经常进行变基,这样如果发生冲突,您可以及早处理它并且更容易解决它。origin/develop当我有长时间运行的功能分支时,我通常每天多次重新定位(我们所说的) 。有助于保持分支清洁的另一件事是也定期进行交互式 rebase。在典型的一天中,我可能会创建 20 个提交,并且在一天结束时,我将使用交互式 rebase ( rebase -i) 来重新排序并将这些提交压缩为 2 或 3 个提交,然后再进行 rebaseorigin/develop. 两周后,我可能已经提交了数百次,但在我创建拉取请求时,我可能只有不到 10 个“完美”提交。根据您的每个提交是什么,这可能适合您,也可能不适合您。变基策略的最大缺点是,如果您确实经常发生冲突,那么当您变基时,您必须更频繁地解决它们origin/development,并且可能在单个提交中,因为它会重播您在分支上的所有提交。在第 13 天标记时,如果您有 100 次提交修改相同的文件,您可能必须为单个 rebase 多次解决冲突(尽管首先在那里进行有意义的 squash 可能会减轻痛苦)。有助于启用 rebase 策略的另一件事是,当分支 rebase 期间出现冲突时,解决它们,然后将您的分支合并回development不久之后。显然,只有在 2 周标记之前允许您同步分支时,您才能执行此操作。

如果你能做到,我会非常喜欢分支和交互式 rebase 策略,但如果由于某种原因你不能,那么你将不得不做一个合并策略。合并策略类似于您的同事提供的策略,即您将定期合并developmentFork/development中,然后每两周使用上面的 #1 和 #2 以另一种方式进行。

于 2020-12-05T18:06:29.883 回答