之前理解是 branch , 但是有个朋友说应该用 tag , 但是他之前用 svn 比较多。所以不知道信谁的
![]() | 1 paradislover 2015-11-18 09:17:12 +08:00 建一个 release 分支,每次发布打上 tag |
![]() | 2 yellowV2ex 2015-11-18 09:17:52 +08:00 正常来说版本应该是用 tag 表示一个存档或者 release 之类,因为 branch 大多是比如你要做一个双 11 专版之类的才用,意义上来说 branch 是分支 |
![]() | 3 mrgeneral 2015-11-18 09:19:47 +08:00 每次发布版本我用的是 branch ,给我的感觉 tag 就是一个标签而已。 |
![]() | 4 restran 2015-11-18 09:21:16 +08:00 赞同 paradislover ,看到很多项目都是会在每个版本打上 tag |
![]() | 5 proudzhu 2015-11-18 09:23:26 +08:00 如果还要更新老版本(打安全补丁之类的),用 branch ,否则 tag 就行了 |
![]() | 6 paradislover 2015-11-18 09:30:38 +08:00 可以参考 git flow ,有自己的标准就行 http://nvie.com/posts/a-successful-git-branching-model/ |
![]() | 7 msg7086 2015-11-18 09:34:24 +08:00 branch+tag 咯 比如你一个产品,发布了 1.1 版本,那么这个分支就打上 1.1 ,然后 fix 都在这个分支上做,要发布 1.1.2 的时候就在 1.1 分支上打 1.1.2 的 tag 就行了。然后这个分支继续维护,以后发 1.1.5 就再打一个 tag 。 然后 mainline 分支就给 new features ,发布的时候分叉出 1.2 分支然后继续维护。 你可以参考一下 Rails 项目的分支,就是典型的 branch+tag 。 |
![]() | 8 timwu 2015-11-18 09:46:49 +08:00 gitflow +1 ,一般是 master 出 release 分支,然后最终发布时, release 分支合并回 develop 和 master ,然后打版本号的 tag |
![]() | 9 pythoner 2015-11-18 09:58:07 +08:00 同意楼上 |
![]() | 10 yyfearth 2015-11-18 10:03:41 +08:00 最终 release 的版本应该是不变的 所以是 tag 而版本(至少是大版本)本身应该是一个 branch 因为你会为这个版本更新 branch 是一个可以更新代码的分支 (一条时间线)对应一个产品线(同一个产品而言就是大版本) 而 tag 是不应该变化的某一个 commit (一个时间点)对应一次 Release |
![]() | 11 yougg 2015-11-18 10:06:55 +08:00 |
![]() | 12 cwek 2015-11-18 10:15:31 +08:00 发布版本用 tag 开发分支用 branch |
13 fengyqf 2015-11-18 10:38:44 +08:00 赞同 @cwek 发布版本用 tag 开发分支用 branch ------------------------------ 公共仓库(或说是集中仓库)里,最好 tag 吧。用 branch 就死在那里了,一大堆不再维护的 branch 丢在那里,不太美观。 开发人员的本地版本库,随便吧,爱怎么搞都行,反正不推到公共仓库里 |
14 DingHao 2015-11-18 10:39:01 +08:00 发布版本用 tag 开发分支用 branch |
15 julyclyde 2015-11-18 10:56:07 +08:00 显然是 tag tag 是一个静态概念,而 branch 是动态的,可以往 branch 里继续 commit 内容,而它还是叫这个 branchname ,不符合“发布”的概念 |
![]() | 16 janxin 2015-11-18 11:28:08 +08:00 目前是 master 分支上直接打 Tag 做发布版本...Bug 通常会快速修复发布,所以会跟随 master 分支前进 |
![]() | 17 happypy1 2015-11-18 11:39:28 +08:00 tag 不就是为了标记版本用的吗? 不过,不管是新建 branch 还是 tag ,在 git 里面,本质上其实只是指针的变化。。 |
![]() | 18 pathletboy 2015-11-18 11:49:27 +08:00 当然是 tag , branch 随时可开。比如你打了 1.0 的 tag ,然后发现要在该版本上修复 BUG ,直接在该 tag 所在的 commit 上创建 branch 进行修复,修复完发布并合并到 master 。 |
![]() | 19 typcn 2015-11-18 12:19:56 +08:00 如果你在开发 Chrome ,用 tag 合适些,滚动更新嘛。 如果你在开发 Windows ,那 branch 合适,因为每次更新变化都很大,而且老版本还要继续更新维护,当然,打补丁修 bug 什么的还是 tag 。 如果你在开发 Parallels Desktop ,那你用 branch 或者 tag 都可以,因为经常会出新的大版本,出了新版本老版本又不维护了,新版本再收一次费。 (玩笑 |
20 18ac0877 2015-11-18 12:58:22 +08:00 gitflow +1 使用 gitflow 省事多了, git 太灵活了,反而搞的太乱 |
21 iburu 2015-11-18 14:47:01 +08:00 恩 |
![]() | 22 cxq OP @paradislover 恩 这个办法好 以前的项目 我决定就这么干 @julyclyde 懂了 谢谢 看来之前是搞错了 原来是有静态和动态的区别的。 @18ac0877 @timwu 之前是看过一次 gitflow 的, 但是当时觉得每个人都装一个这个很麻烦,看来有必要用起来。 给刚接触的同事用 也很比较合适。 |
24 feuvan 2015-11-18 22:27:16 +08:00 feature branch release tag |
![]() | 25 jesse_luo 2015-11-18 22:30:43 +08:00 发布分支上打 tag ,但发布前是在预发布分支上的 |
![]() | 27 cxq OP |
![]() | 28 wizardforcel 2015-11-19 12:29:19 +08:00 via Android 比如发布了 1.8 你不打算更新 1.7 了 就用 tag 发布了 2.0 你还打算更新 1.x 就用 branch |