GIT:每次提交是唯一的标记吗?

Rud*_*die 3 tags git commit

如果你只能使用一次标签(通过提交唯一),我该如何处理标签" Version 7.3"中的7次提交?
我讨厌GIT没有修改版本号(如SVN :)).

我猜一个子问题是:
"控制"版本号的最佳做法是什么(ex修订版,所以我想major.minor在每个提交中保存并且在每个分支中确定(我为每个小部分制作> = 1个分支)).

第一个问题有一个事实答案(我认为).
第二个是更好的最佳实践调查.

非常感激!我从stackoverflow FTW学到了很多GIT!

kub*_*ubi 10

我不确定你的第一个问题是什么,但我可以为你回答第二个问题.

只需标记每个版本.'v1.0','v1.1','v2.0'.标签与分支完全分开,因此您选择处理标签的方式并不取决于您选择如何处理分支.

例如,如果您的仓库如下所示:

A--B--C--D--E  <- master
   \
    --C'-D'-E' <- test_branch
Run Code Online (Sandbox Code Playgroud)

您可以将标记应用于分支E'并安全删除test_branch,而不会丢失代码E'.出于这个原因,人们为历史版本维护git分支是相当罕见的.使用版本号标记版本,并随意删除不再需要的任何分支.

FWIW,我也使用这种技术来保持我的分支机构最小化.如果我在新分支上走下一个死胡同的开发路径,我可以标记该分支(以防万一)并删除分支.如果我再次需要该代码,我可以通过标签获取它.


编辑重新:你的评论.

正是我的观点:"一个标签引用一个提交"?那有点糟糕,不是吗?

我觉得它根本不太糟糕.如果要在某个时间点保留引用,则使用标记,如果要保留对更改集的引用,则使用分支.

@ VonC提到的git-describe是正确的.这是我用来将版本号注入我的所有代码中的方法.向公众发布的任何内容都将始终获得标记,因此git describe返回类似"v1.0"的内容.内部测试版本将被标记为"v1.0-10-abcd1234",这表示我在v1.0标记之前提交了10个提交并提供了哈希,因此我可以直接轻松访问该提交.

  • @aidan 标签是指向单个提交的静态指针,分支指向可以随着持续开发的时间而变化的提交。从长远来看,您最需要的是标签来归档代码库中的重要点。分支在开发功能和其他内务处理时最有帮助,但在共享存储库中应保持在最低限度。 (2认同)