如何仅为标记提交设置单独的分支?

3 git

我的任务是组织存储库,除了其他分支之外还有一个专用分支,我们只存储已发布版本的提交.以下是我想要实现的简化方案:

| trunk    |           | releases |
|----------+-----------+----------|
| commit 1 |           |          |
| commit 2 | v0.1 ---> | tag 1    |
| commit 3 |           |          |
| commit 4 |           |          |
| commit 5 |           |          |
| commit 6 | v0.2 ---> | tag 2    |
| commit 7 |           |          |
| commit 8 |           |          |
| commit 9 |           |          |
Run Code Online (Sandbox Code Playgroud)

这对我来说有点太先进,所以我很感激如何做到这一点!我不确定如何能够在"版本"分支中拥有第二个标记,而不必导入所有中间提交.这有可能吗?

此外,如果您有更好的方案来实现相同的目标(目标是仅为发布版本设置专用分支),请不要犹豫,建议!

Von*_*onC 6

这没有意义,因为标记的提交代表了一个由提交及其前身组成的分支的状态.

隔离标记的提交会写出一个非常不同的历史记录,因为这些提交会遗漏它们的祖先:它是所述祖先的序列加上标记的提交,它将代码库引导到特定的状态.

更简单的方法是确保在一个专用分支(例如master)中标记发布提交.

然后,一个简单的git show-ref --tags列表可以列出这些标签引用的comimts.

或者您可以从任何这些标记创建分支(用于修复版本的错误)

git checkout -b newbranch v1.0
Run Code Online (Sandbox Code Playgroud)

您可以从任何commit(git describe --long)中推断出最后一个发布标记.


wvxvw OP增加的评论:

但是发布的分支只存储特殊提交(标记的)的历史记录,并指向其他分支作为提交来源的来源

这可以通过在"发布分支"中合并标记提交,以及保持"他们"的合并(即合并的来源,意味着标记提交的来源)

--x--x--x--x--x--x--x
 (v1)     (v2)
   \        \ 
----y--------y--
Run Code Online (Sandbox Code Playgroud)