为合并请求准备分支

prepare branch for merge request

为了处理一项功能,我从 development 生成了一个新的 feature 分支,处理它并向 development 提交合并请求 (MR)。在我 feature 的工作期间,development 分支可能会发生很大变化。

为了避免合并冲突,我在提交 MR 之前将最新的 development 合并到 feature 中,并且我在 feature 上的提交与来自 development 的大量其他提交混合在一起, 使提交历史非常丑陋,我想也更难审查。

我想到了这个,当准备好 MR 时:
不要将 development 合并到 feature,而是从最新的 development 创建新分支 feature-mr,然后从 feature 合并或挑选到 feature-mr,最后将 feature-mr 的 MR 提交给 development

不知道有没有针对这个常见问题的通用做法。

您要查找的是git rebase development

您的存储库如下所示,featuredevelopment 后面。

A - B - C - D - E [development]
     \
      F - G - H [feature]

git rebase development 将在开发的基础上重播功能中的每个补丁。有点像樱桃挑选 F、G 和 H。你最终得到这个。

A - B - C - D - E [development]
     \           \
      F - G - H   F1 - G1 - H1 [feature]

F、G 和 H 最终将被垃圾回收。这需要数周时间,因此如果 rebase 出现问题,您可以返回给他们。

您可以使用 git pull --rebase origin development 一步更新您的存储库并变基 feature。这将执行 git fetch origin 但随后 git rebase origin/development 而不是 git merge origin/development。请注意,您的本地 development 分支不会更新,您必须这样做。如果这让您感到困惑,请忽略它并继续您的正常工作流程,将 git merge development 替换为 git rebase development

请注意,由于提交 ID 发生变化,如果您已经推送 feature,将会出现问题。您将不得不 git push --force,而其他从事 feature 工作的人将很难完成。