49

我正在研究从 starteam 切换到 Git。

目前,在starteam 中,我们使用具有特殊名称的“浮动视图”。这些浮动视图基本上像别名一样工作。因此,我们可以指定一个特定的别名来检出,我们将获得我们当前正在模型测试的分支。

这将如何在 Git 中完成?这基本上是我们的分支机构的组织方式:

这些都是分支

master (stable view)
   |  - Branch 2012.05.01
   |          | - Project 1
   |          | - Project 2
   |          | - model [floating view / alias to Branch 2012.05.01]
   |
   |  - Branch 2012.07.11   (these would also have various child views for projects)
   |  - Branch 2012.10.17

Branch 2012.05.01master在模型测试完成时合并。)

在我们的自动化脚本 (ant) 中,为了运行我们的模型部署,我们只需从名为model. 这样,当我们更改我们正在模型测试的分支时,我们永远不必更改脚本,并且找出我们正在模型测试的视图就像找出model分支引用的分支一样容易。

有没有这样的方法可以在 Git 中做类似的事情?

澄清:

  1. 我想要一个分支的别名。一个分支,而不是一个提交。
  2. Branch 2012.05.01表示打算在 2012.05.01 发货的分支,并不意味着 2012.05.01 时刻。
  3. 我想要一个别名Branch 2012.05.01Branch 2012.05.01是一个集成分支,它不断被修改。但我不想将其引用为Branch 2012.05.01,我想将其引用为model。这样,我可以将别名更改为Branch 2012.07.11,它将从该分支获取最新的代码,而无需更改任何结帐代码脚本。
4

3 回答 3

61

请看这里:https ://stackoverflow.com/a/549949/606723

您可以按照 Greg 的建议重命名主分支主干,或者您也可以创建一个主干作为对主分支的符号引用,以便 git 和 svn 用户都拥有他们习惯的“主”分支。

git symbolic-ref refs/heads/trunk refs/heads/master

请注意,主干不是一等公民。如果您签出trunk 并执行git status,您实际上将在master 上,但是您可以在所有使用分支名称(日志、合并等)的地方使用trunk 命令。

于 2013-06-21T13:37:08.970 回答
4

Git 不支持分支的别名。

这意味着您将不得不依赖脚本中的变量来制作 model="branch.2012.10.17" 或类似的东西。然后你的脚本会做这样的事情:

git checkout $model

我将把这个答案的其余部分留在这里,因为我们在这个讨论中来自哪里:

可以在这里找到关于分支策略的非常复杂的讨论:http: //dymitruk.com/blog/2012/02/05/branch-per-feature/

具体来说,看一下集成分支和发布候选分支的作用。这可能是您正在寻找的。

将 git 视为拍摄工作目录快照的东西,而不是文件夹的历史记录。

progit.org/book 解释了存储历史的有向无环图。所有引用都只是指向其中节点的东西。这应该阐明您希望如何构建您的工作流程。

制作一个开始标签 - version2.1。从那里制作您的 int-version2.1 (为简洁起见,使用 nummers 而不是日期)。您开始的任何工作,都从版本 2.1 标记开始。将工作合并到 int-version2.1 中。其他人也会这样做。

于 2013-01-16T19:14:35.320 回答
0

如果您需要每个功能分支 - Adam Dymitruk 的答案是正确的,但是如果您需要保存链接分支 - 特定状态(基于时间),无需更改它们,您可以使用 git 标签。

我使用标签来表示每个产品版本的商店状态。

于 2013-01-16T19:17:32.627 回答