如何用主分支历史覆盖开发分支

时间:2018-08-29 15:22:41

标签: git branch

问题

在我们的工作流程中,我们有一个开发分支,该分支有时会充满各种功能。有时,这些功能永远不会合并到母版,因为它们将无法使用或该功能已被删除。

因此,开发分支由不必要的提交组成。

我们每半年尝试尝试重新创建开发分支。我们将其删除,然后从实际的master分支中签出。 每个开发人员都必须意识到这一事件,因为他们必须使用新创建的来源/开发来切换其本地开发分支。

通常这是行不通的。由于某些开发人员生病或度假,他们返回时会跳过描述此事件的电子邮件。他们最终陷入混乱。

问题

我们如何清理 development 分支,使其仅包含与 master 分支相同的提交。实际上,它应该包含与我们从master分支中重新签出时相同的提交历史记录。

2 个答案:

答案 0 :(得分:1)

您可以重写development分支的历史记录,以任意指向master所做的同一提交,从那时起,它们将具有完全相同的历史记录。

git branch -f development master

但是,由于development是共享的,这意味着每个回购用户将必须更新其现在已过时的本地版本development,这意味着解决冲突……很难说这是'比您描述的工作流程更方便。

答案 1 :(得分:0)

  

实际上,它应该包含与我们从master分支中刚签出时相同的提交历史记录。

如果您确实希望development分支与master分支相同,则可以将其重置:

git checkout development
git reset --hard master

但这并不是真正理想的操作,因为它重写了development分支的历史记录。假设您说过,有些开发人员可能正在休假,当他们回来拉development时会感到惊讶。实际上,除了每个执行硬重置的开发人员外,每一个开发人员都会陷入困境。

因此,更好的计划是创建一个 new 开发分支(使用不同的名称),其起始点为master分支。然后,每个开发人员都可以从一开始就简单地重新签出该分支,而不会出现任何问题。