分支/主标签修订使用Git递增

时间:2009-08-06 13:48:31

标签: git

我正在尝试确定一个良好的发布管理系统,并结合使用版本号标记的标记实践 - 例如1.0。该标签之后的任何更改都会增加,如1.0-1,1.0-2等。

但是,如果我从master for 1.0版本创建一个新分支,然后切换到该分支并将其标记为1.0,则上述系统工作正常。该分支上的其他错误修复按预期显示,1.0-1,1.0-2

但是,除非我在制作1.0分支后第一次提交后重新标记主服务器,否则主服务器上的任何工作也将显示相同的增量:1.0-1,1.0-2

当然,sha1哈希将是唯一的,但我最终会从master和branch获得相同的修订/增量。

当我标记分支时,有没有办法避免master被标记?有没有更好的方法呢?现在,我在创建分支1.0之后的唯一选择是在master上进行一次小的提交,然后为1.1-dev或其他东西重新标记它。

然后重复每次发布。

然而,如果一个分支再次被标记,比如1.0.1版本,那么它似乎也会标记master,因为那是先发生的事情?

3 个答案:

答案 0 :(得分:5)

在Git中你没有标记分支。你标记提交。如果你想“标记”你已经拥有的分支:分支的名称。 :)

是的,git describe为您提供1.0-2-g1ab3183之类的提交标识符,但这些标识符不是标记!标记是使用git tag(已经猜到了)完成的,使用git tag创建的标记是提交标识符git describe创建的基础。

答案 1 :(得分:4)

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

作为Git中的Bombe said,您不会标记分支。你标记提交。在Git中,tag只是(注释)指向提交的指针。

在你的情况下,我认为你有类似下面的内容

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

让我们提交'X'由标签'v1.0'指向。此提交在分支'master'和分支'maint'上。如果你在提交'A'('master'分支的顶部)之上运行“git describe”,你会得到像v1.0-2-g9c116e9这样的东西。如果你在提交'A'('maint'分支)之上运行“git describe”,你会得到类似v1.0-2-g3f55e41的东西(至少使用默认的git-describe配置)。请注意,此结果略有不同。 v1.0-2-g9c116e9表示我们在提交时使用已分类的SHA-1标识9c116e9,在标记v1.0之后提交2次。没有标记v1.0-2

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

HTH

答案 2 :(得分:2)

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

标签和分支是独立的。

因此,如果您想要签出特定版本以对其进行小修改,那么您可以执行以下操作:

git checkout -b new_branch_name commit_id

或者,

git checkout -b new_branch_name tag_name

两者都是引用特定提交的等效方式。

进行更改,提交更改并使用次要版本标记提交。

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