【问题标题】:Working on multiple git branches that are dependent on each other在多个相互依赖的 git 分支上工作
【发布时间】:2016-09-18 07:57:05
【问题描述】:

我在 Git 上维护一个项目的 4 个分支,结构如下。

  • 主人
  • 学生
  • 老师
  • 身份验证

问题是我最后创建了“身份验证”分支,并从该分支添加了一些代码。现在,我切换到“教师”分支继续工作。但是,我需要在“身份验证”模块中添加的一些功能来处理“教师”模块。但我还没有完成“身份验证”模块的工作以进行合并。用 git 处理这个问题的正确方法是什么?谢谢。

【问题讨论】:

  • authenticationmaster 提交PRpull request。批准从authenticationmaster 的PR,然后从master 拉最新到teacher
  • “teacher”分支在“master”之前。从“大师”拉到“老师”可以吗?
  • 你可以 cherry-pick 特定的提交从 authentication 分支到 teacher 分支。

标签: git github git-branch


【解决方案1】:

听起来你的分支相互依赖,这给你带来了问题。分支依赖可能是由于分支越来越大并且包含的​​东西太多。

这意味着您可以从早期合并较小的事物中受益!但是看起来您不想在“完成”之前将 teacherstudent 合并为 master。

听起来您需要一个可以合并已完成但可能尚未准备好发布的工作的地方

如果您正在考虑将 master 作为只包含已完成功能的分支,那么您可能需要另一个名为 develop 的分支,它允许不包含全部功能,而是合并较小的步骤?

然后你可以这样做:

  • 做一些与teacher相关的功能,合并到develop
  • student 相关功能创建一个新分支,合并它们以进行开发
  • 重复此操作,直到 develop 看起来您可以发布了
  • develop 合并到master 并为新版本添加标签

这意味着,无论您在teacher 工作期间所做的任何系统改进,它们都将在student 工作期间为您快速提供。这同样适用于其他功能,如身份验证。

不要让您的功能分支保持未合并状态超过几天。
未合并的工作是浪费!

更多阅读:A successful Git branching model

【讨论】:

  • 感谢您花时间解释。我希望有一个关于 Git 最佳实践的清晰解释。
【解决方案2】:

这通常发生在等待缓慢的代码审查时,而您的新更改堆积在小型可管理分支的顶部以进行审查。一旦你深入到 7 层并在链的底部进行了更改,那么更新就变得非常耗时......

所以我创建了这个脚本来为你完成这个合并! (它在错误或合并冲突时停止) https://gist.github.com/brennemankyle/6770781bc43c8d2b03988c4c89867871

【讨论】:

  • 我以前见过的所有“解决方案”都要求你压缩东西,或者强制将更改推送到你已经推送的提交。然而,这以添加合并提交(如合并原点/主节点)为代价,但我认为这比 rebase 合并冲突或丢失 git 历史记录问题更小
猜你喜欢
  • 1970-01-01
  • 2013-12-02
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 2016-10-14
相关资源
最近更新 更多