2009-08-06 84 views
6

我试图找到一个良好的版本管理系统,并结合使用版本号标记标签的做法 - 例如1.0。该标记后的任何更改将被增加,如1.0-1,1.0-2等使用Git的分支/主标签修订版本增量

然而,如果创建从主一个新的分支1.0释放,然后我切换到该分支和标记,1.0,上述系统工作正常。该分支上的其他错误修复程序如预期的那样显示,1.0-1,1.0-2

但是,除非在进行1.0分支之后第一次提交后重新标记主设备,否则主设备上的任何工作也将显示同样的增量:1.0-1,1.0-2

诚然,SHA1哈希将是独一无二的,但我最终不得不从主机和分支相同版本/增量。

当我刚刚标记分支时,是否有任何方法可以避免主标签被标记?有没有更好的方法来做到这一点?现在,我做分支1.0之后唯一的选择是在master上做一个次要提交,然后为1.1-dev或其他东西重新标记它。

然后重复每个版本。

但是,如果一个分支,然后再标记,譬如说1.0.1版本,这也似乎有它,因为这是发生了什么事第一也将标签主?

回答

6

在Git中你不会标记分支。您标记提交。如果你想“标记”你已经得到的分支:分支的名称。 :)

是,git describe给你承诺标识符像1.0-2-g1ab3183,但这些都没有标签!标记用git tag(谁会猜到)完成,并且使用git tag创建的标记是提交标识符git describe创建的基础。

+0

我完全理解标签,分支等是什么,以及它们是如何使用的。问题是当你添加一个新的标签到现有的分支。假设我为1.0创建了一个支持分支 - 主控继续使用新功能等。针对1.0的错误修复发生在该特定分支上。 假设我想为1.0.1版本再次标记或重新分支/标记。如果我在任何分支上标记该修订,那么当我只打算标记提交发生的分支时,我的MASTER就会开始显示1.0.1-1,1.0.1-2。 我不想让主人和分支共享这样的标签。 – helion3 2009-08-06 16:31:00

+0

你的意思是'git describe'显示'1.0.1-1','-2'等吗?因为它不应该受到不是当前提交的祖先的标签的影响(并且它不应该是如果它在另一个分支上并且你已经承诺这两个分支)。 – Bombe 2009-08-07 06:48:48

2

在git中,标签是特定提交的别名,而不是分支。

标签和分支是独立的。

所以,如果你想签一个特定版本做就可以了未成年人转,那么你可以这样做:

git checkout -b new_branch_name commit_id 

或者,

git checkout -b new_branch_name tag_name 

两者都指的是简单地等同方式具体提交。

进行更改,提交它们并用小改动标记提交。

你甚至可以删除你签出的分支。

4

在Git中,你不能说,有些犯属于一些分支。单提交可以在多个分支上;如果提交A是分支尖端的祖先之一,我们说它在给定分支上。

由于Bombe said在Git中你没有标记的分支。您标记提交。在Git标签中,只是(带注释的)指向提交的指针。

你的情况,你有,我想,像下面

 
         /-- [v1.0] 
         v 
---.---.---.---X---.---A  <-- master 
         \ 
          \-.---B  <-- maint 

让我们犯“X”的标签“V1.0”被COMIT指出。该提交既在分支“主”上又在分支“主线”上。如果您在提交'A'(“主”分支的顶部)上运行“git describe”,则会得到类似v1.0-2-g9c116e9的东西。如果你在提交'A'('maint'分支)上运行“git describe”,你会得到类似v1.0-2-g3f55e41(至少在默认的git-describe配置下)。请注意,这个结果稍有不同。 v1.0-2-g9c116e9意味着我们在提交经过分类的SHA-1标识为9c116e9,2个提交标记v1.0后提交。没有标签v1.0-2

如果您希望标记仅出现在分支“master”上,则可以在分支'maint'分支后创建新的提交(例如,仅更新GIT-VERSION-FILE中的默认/备用版本信息)。如果您在'maint'分支上标记提交,例如'v1.0.3`只能从'maint'中看到。

HTH

+0

我想我只是不够清楚。我知道你和其他人都说过的一切,但我的问题是,如果我在分支上创建一个新的标签,那么对主人的git描述就会开始反映这个新标签。从本质上讲,我最终可能会在分支和主控中都有两个1.0-1,1.0-2,1.0-3版本,但实际上,它们代表两个不同的版本,应该更像1.0-1,1.1- dev-1等 我觉得我唯一的解决办法就是在完成一次提交之后重新标记主设备,然后再为分发设置一个分支。 – helion3 2009-08-07 14:33:59

+0

只有标记comit也可以从'master'(是'master'的祖先之中)时才会发生。 – 2009-08-07 16:07:07

+0

请勿使用git-description中的1.0-1;使用1.0.1标记维护版本 – 2009-08-07 18:59:20