git - 合并、变基或分支以获得持久分支?
问题描述
从概念上讲:我有一个名为'core' 的master分支。
这个分支将永远存在。
每周一次,核心需要获取已对master所做的任何更改。
每月对核心所做的更改需要推送回master。
core有时会有诸如feature1或feature2 之类的分支,它们可能存在一两个月,然后它们将合并到core中,并且功能分支将被删除,然后core将在月底将这些更改推送到master 。
我可以使用 rebase 或 merge 来做到这一点,或者我可以在合并到master后每个月创建一个新的核心分支。
我认为做到这一点的最好方法是每周和每月使用“合并”,但我对 github 不太了解,所以这是正确的方法还是你预见到未来会出现任何问题?
week1 week2 month end
--o--o--o--o--o--o--o--o--o--o--o--o--o--o--o master
\ \ \ / \
o--o--o--o--o--o--o--o--o--o---o--o--o--o core
\ \ /
o--o--o--o--o--o--o--o--o--o feature
master 由一个大团队开发,core 有一个小团队,一个功能通常是一个人(尽管仍被推送到 github 以测试或演示功能),core 和 master 团队通常不会接触相同的文件。
解决方案
您建议的工作流程有点类似于Git 流程(另请参阅此备忘单)。
关于您关于合并与变基的问题,应该注意 agit rebase
是一种破坏性操作(不仅它会更改变基提交的 SHA1,而且源分支中每个提交的代码库都可能会编译,而这些提交中的一些或全部在变基后不再编译!)。相反,agit merge
将保留来自两个处于危险中的分支的所有提交,并创建一个合并提交,如果需要,它可以合并冲突解决更改。
这个“缺点”git rebase
可能是为什么在实践中,Git 流程总是使用实现的git merge
(实际上git merge --no-ff
,请参阅相应的文档)。
然而,一些团队可能会选择不同的工作流程来将贡献集成到 master 中,当功能分支和 master 之间存在一些冲突时需要使用git rebase origin/master
(以便拥有更“漂亮”的线性历史)。不过,在这种情况下,建议检查每个 rebase 提交是否仍然编译(为了不妨碍bisecting)。
推荐阅读
- java - Amazon SP-api 请求中包含的安全令牌无效错误
- postgresql - POSTGRESQL 数据库触发器 anf 函数
- sql - SQL 从 JSON 中的数组中选择
- javascript - 当前重点字段已弃用,将在未来版本中删除
- java - 函数式接口中的函数如何执行 lambda 函数?
- flutter - Flutter QR 结果传递
- c# - Azure SDK .NET 身份验证问题(ServicePrincipalLoginInformation 应包含有效的 ClientId 信息)
- reactjs - Magic Link 电子邮件身份验证发送多个请求
- gitlab - 如何在管道内推送后不触发管道
- javascript - jQuery UI Resizable 永远不会达到设置宽高比的全宽