我们有一个非常标准的 git 工作流程,但我对一件事感到恼火:master 领先于开发,因为每次部署我们都会创建从 dev 到 master 的合并提交。
首先我们的工作流程:
-
master branch
- 始终干净并可用于部署
-
development branch
- 收集新功能/错误修复(如果有)
审查并批准
-
feature branch
- 一个新的分支,只有
一项功能需要更改(它是分支的development
branch
)
每个成功的拉取请求(功能>开发)都会创建一个合并提交,这很好。
但是每次部署(开发>主控)也会创建一个合并提交只存在于master中。因此,在 20 次部署之后,主分支比开发分支提前 20 次提交。
你如何处理这种行为?你是否时不时地合并 master > dev (这实际上除了创建一个无用的合并提交之外什么也没做)?
重新调整开发分支似乎不是一个选择,因为那样每个开发人员都会丢失跟踪的远程分支。
您所要求的称为“快进”合并。既然您提到了拉取请求,我假设您正在使用某些东西来管理您的分支(GitHub、BitBucket 等),因此完成您想要的操作的确切说明可能会有所不同。
鉴于这种状态:
master o-o-o-o
\
development o-o-o
您的软件可能正在应用--no-ff
合并时标记(这是标准行为,因为您希望在将功能合并到development
)。从命令行来看,这相当于:
git merge --no-ff development
master o-o-o-o-------o
\ /
development o-o-o
但是,如果您想避免合并提交,您确实需要快进分支:
git merge --ff development
(The --ff
应该是不必要的,因为这是默认行为)
master/development o-o-o-o-o-o-o
Notes:
- 如果你这样做,你就会失去判断何时发生的能力。
development
被合并到master
。这可能不是一个问题(或者您可能会以其他方式解决这个问题,例如使用标签)。
- 如果您确实有独特的提交
master
并且快进是不可能的,这仍然会创建合并提交。但是,您可以使用该标志--ff-only
如果无法快进(无论是唯一提交master
或已经是最新的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)