为显式合并建立“干净的” git历史记录>>

问题描述 投票:0回答:1

我有一个使用GitFlow

的git存储库(即它具有masterdeveloprelease-*feature-*分支)。但是,协作者尚未使用显式合并(即git merge --no-ff),因此例如git log --first-parent不能提供到目前为止的合并历史记录的简单汇总。

向前移动,协作者将使用显式合并。但是,在执行此操作之前,我想确保历史记录是“干净的”,以便在调用git log --first-parent时不会显示任何先前的历史记录。但是,显然,我要在调用未过滤的git log时保留actual

提交历史记录。

我的意愿是执行以下操作:

$ git checkout develop
$ git checkout --orphan CleanSlate
$ git rm . -r -f
$ git commit --allow-empty -m "Establish a clean slate for the develop branch"
$ git merge --no-ff --allow-unrelated-histories develop -m "Introduce all legacy files"
$ git checkout develop
$ git merge CleanSlate

基本上,我们的想法是:

  1. 建立没有先前历史的新(--orphan)分支
  • (<< [Optional)从工作树中删除所有文件,以便我们不重新提交它们
  • 建立初始提交,以便我们可以合并到其中
  • --no-ff分支执行
  • 显式合并
  • (即develop),并确认不相关的历史记录快进develop到我们刚刚执行的
  • 显式合并
  • ,以表示历史记录

    我的问题:在将这种方法应用于生产环境之前,应该注意这种方法的后果吗?是否存在替代或更简单的方法来实现这种情况?((在测试中,这似乎实现了我的目标,而对现有分支或工作流没有不利影响。但是,使用git时,我总是对我不知道的东西保持警惕。)

    我有一个使用GitFlow的git存储库(即它具有master,develop,release- *和feature- *分支)。协作者尚未使用显式合并(即git merge --no-ff),但是,...

    git git-merge git-flow git-history
    1个回答
    0
    投票
    我想我在这里理解了这个主意。

    让我们逐步画出实际发生的情况。出于初始绘图的目的,假设分支develop以普通提交D结尾:

    © www.soinside.com 2019 - 2024. All rights reserved.