【发布时间】:2017-04-14 22:43:13
【问题描述】:
作为我工作的一部分,我用来在我们的环境 dev/test/prod 之间进行部署
我们使用众所周知的分支流程来管理我们的代码,因此我们有以下分支:
dev -> 当一个特性被实现时,所有分支都被合并为一个提交
test -> 我们使用平台测试代码的地方
master -> 这个分支实际上只用于创建标签,然后将在我们的生产服务器中使用
最近我想找到一种方法来保持代码历史尽可能干净,但我正在努力解决如何轻松做到这一点。
我创建了一个repository 并复制了一个流程,以便您了解我为什么挣扎
所以,在 initial commit 之后,我创建了 2 个分支 dev 和 test 并切换到 dev 进行以下提交并进行了 3 次提交:
9e76b6d - koop4:添加了令人敬畏的功能,让生活更轻松
44976b1 - koop4:添加了让生活更快的令人敬畏的功能
64ea9d3 - koop4:添加了让生活更美好的令人敬畏的功能
我创建了一个pull request 以将这些功能带入 test 并通过一次提交来压缩合并它们。我也喜欢将 git 命令的结果粘贴为注释
git log --pretty=format:"%h - %an: %s" test..dev
有时会发生更多功能会经历这个周期,直到一切都准备好投入生产。让我们避免重复,让我们转向另一个pull request!
注意:在 prod 中,我们使用标签名称作为提交消息
我们做到了!我们现在在我们所有的环境中都有一个超级干净的历史!太好了!
那么,问题出在哪里? 现在让我们通过在 dev 中添加新的提交来重复这个循环:
ca215e8 - koop4: 这会让你尿裤子
9e76b6d - koop4:添加了一个让我们吓坏了的可怕功能
让我们创建pull request 和...等等...什么???为什么它说我仍然缺少这些提交:
好的好的,我理解这个概念,但是在这一点上我想你意识到了我的挣扎。为了保持我的历史干净,我必须自己选择我需要的提交:
甚至为我们的主人pull request重复这个过程。
最后,通过一些管道,我可以获得所有环境的伟大历史,但是当事情开始发展时,我很难理解我必须在提交注释中放入哪些提交以保持其干净。
有没有人建议保持一个干净的历史而不必那么努力?
【问题讨论】: