【问题标题】:Sync feature branch with master without rebase?在没有变基的情况下与主同步功能分支?
【发布时间】:2015-01-08 06:42:38
【问题描述】:

在工作中,我们在功能分支模型之上进行开发,所有集成最终都在 master 分支中结束。我们从mastermerge 分支到master。这会产生一个非常复杂的历史图表,我们正在寻找简化开发工作流程的方法。

这样做的一种方法是 rebase 而不是 merge。但是,我们安装了一个内部 GitLab 实例,其中禁用了覆盖权限(并且不会仅为我们的项目启用它们)。因此 rebase 是不可能的。

老实说,我看不出有什么办法。但我不是 Git 专家,我可能会遗漏一些东西。

有什么建议吗?

【问题讨论】:

  • 如何在最新的 master 上创建一个新分支,并将所有来自 feature 分支的提交应用到新分支之上。这会创建一个基于 master 的新分支
  • 我想这是一个明智的解决方案@BartlomiejLewandowski。

标签: git git-merge git-rebase feature-branch


【解决方案1】:

编辑 - 我的第一个答案绝不是最好的方法,尽管它会起作用。我把它留在下面以防万一有人感兴趣。更好的答案如下:

您可以将git cherry-pick 与一系列提交一起使用,以将featurebranch 提交一次一个应用于master。任何提交范围规范都可以,但在您的情况下,最简单的可能是(主检出):

git cherry-pick featurebranch ^master

这意味着'在 featurebranch 上挑选所有不在 master 上的东西'。

旧的、糟糕的解决方案

您可以使用git format-patchgit am

在分支featurebranch 上运行git format-patch master 将为featurebranch 上的每个提交生成一个补丁文件,而不是master。然后您可以切换到master 并使用git am 应用补丁。

(在更直接的情况下,featurebranch 尚未与任何人共享,那么您可以将masterfeaturebranch 相对应,而将featurebranchmaster 相对应,这将使@987654338 @master 的副本,顶部有额外的提交,然后将 masterfeaturebranch 相对应,这将使 git 快进 master。)

【讨论】:

  • 我认为这太混乱了,开销也太大了。
  • 我意识到有一种更简单的方法,我已经编辑了我的答案以包含它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 2019-10-27
  • 2013-09-03
相关资源
最近更新 更多