我应该标记哪些 git 个分支?
Which git branches should I tag?
我非常喜欢 NVIE git 分支模型并且一直在尝试采用大部分原则:http://nvie.com/posts/a-successful-git-branching-model/
它并没有真正说出来,但它暗示你应该只标记 master 分支。这是大多数人在做的事情吗?我问的原因是,我经常有一个来自开发分支或功能分支的构建,我想将其发送给其他人(受信任的客户或内部测试组)进行测试。将它合并回 master 还没有意义,但似乎也有必要标记它或以其他方式在其上放置版本号以在进一步测试期间跟踪它,尤其是在不断修复错误和不断改进功能的情况下边走边添加到各个分支。
我一直在阅读很多关于版本编号系统的文章,例如 major.minor.patch.build。我可以看到跟踪这些版本号的一些好处 "intermediate builds." 但我也可以设想如果我不小心的话,来自多个分支的多次提交意外地以完全相同的版本号结束。
那么我应该只将标签限制在 master 分支上吗?如果是这样,我如何跟踪从其他分支发出的版本?
感谢所有的输入!
不需要使用标签。相反,您可以使用缩写的 Git 提交 ID:
major.minor.patch.build
然后是
3.7.1.b79bbd3
提交 ID 实际上保证不会冲突。
我的规则是标记用于生成离开开发机器的构建工件的每个提交,无论这是用于内部测试还是 public 发布。而且你最好在 UI 中的某处公开该标记 app/site 无论如何,这样当你收到错误报告时,你可以通过精确提交交叉引用它。
例如,我对 master
和 develop
分支的所有更新都被 CI 自动标记(这些构建用于内部测试),格式为 build-xxx
.此外,我为每个上线的构建手动标记 master
,并使用 vX.Y.Z
等标签。
更新
关于冲突的注意事项:您可以设置 CI 以便保证所有构建标识符在所有分支中递增 1。
如果您不使用 CI,您可以使用提交的 SHA1 作为在您的应用程序中向用户公开的构建标识符,在这种情况下,您可以完全跳过使用中间标签并只坚持使用vX.Y.Z.
个
更新 2
关于为中间构建创建标签的注意事项:您可能会发现自己有数百个标签,因此为中间短期构建创建标签可能不是最佳解决方案,在这种情况下,使用 SHA1 会更好具有真正可用于生产的稳定版本的标签。
这实际上取决于您正在进行的构建的目的、数量和频率。
我非常喜欢 NVIE git 分支模型并且一直在尝试采用大部分原则:http://nvie.com/posts/a-successful-git-branching-model/
它并没有真正说出来,但它暗示你应该只标记 master 分支。这是大多数人在做的事情吗?我问的原因是,我经常有一个来自开发分支或功能分支的构建,我想将其发送给其他人(受信任的客户或内部测试组)进行测试。将它合并回 master 还没有意义,但似乎也有必要标记它或以其他方式在其上放置版本号以在进一步测试期间跟踪它,尤其是在不断修复错误和不断改进功能的情况下边走边添加到各个分支。
我一直在阅读很多关于版本编号系统的文章,例如 major.minor.patch.build。我可以看到跟踪这些版本号的一些好处 "intermediate builds." 但我也可以设想如果我不小心的话,来自多个分支的多次提交意外地以完全相同的版本号结束。
那么我应该只将标签限制在 master 分支上吗?如果是这样,我如何跟踪从其他分支发出的版本?
感谢所有的输入!
不需要使用标签。相反,您可以使用缩写的 Git 提交 ID:
major.minor.patch.build
然后是
3.7.1.b79bbd3
提交 ID 实际上保证不会冲突。
我的规则是标记用于生成离开开发机器的构建工件的每个提交,无论这是用于内部测试还是 public 发布。而且你最好在 UI 中的某处公开该标记 app/site 无论如何,这样当你收到错误报告时,你可以通过精确提交交叉引用它。
例如,我对 master
和 develop
分支的所有更新都被 CI 自动标记(这些构建用于内部测试),格式为 build-xxx
.此外,我为每个上线的构建手动标记 master
,并使用 vX.Y.Z
等标签。
更新
关于冲突的注意事项:您可以设置 CI 以便保证所有构建标识符在所有分支中递增 1。
如果您不使用 CI,您可以使用提交的 SHA1 作为在您的应用程序中向用户公开的构建标识符,在这种情况下,您可以完全跳过使用中间标签并只坚持使用vX.Y.Z.
个
更新 2
关于为中间构建创建标签的注意事项:您可能会发现自己有数百个标签,因此为中间短期构建创建标签可能不是最佳解决方案,在这种情况下,使用 SHA1 会更好具有真正可用于生产的稳定版本的标签。
这实际上取决于您正在进行的构建的目的、数量和频率。