我有一个使用GitFlow
的git存储库(即它具有master
,develop
,release-*
和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
基本上,我们的想法是:
- 建立没有先前历史的新(
--orphan
)分支
--no-ff
分支执行develop
),并确认不相关的历史记录快进develop
到我们刚刚执行的我的问题:在将这种方法应用于生产环境之前,应该注意这种方法的后果吗?是否存在替代或更简单的方法来实现这种情况?((在测试中,这似乎实现了我的目标,而对现有分支或工作流没有不利影响。但是,使用git时,我总是对我不知道的东西保持警惕。)
我有一个使用GitFlow的git存储库(即它具有master,develop,release- *和feature- *分支)。协作者尚未使用显式合并(即git merge --no-ff),但是,...
让我们逐步画出实际发生的情况。出于初始绘图的目的,假设分支develop
以普通提交D
结尾: