git - 分支别名?

时间:2013-01-16 19:11:48

标签: git version-control branching-and-merging feature-branch

我正在研究从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

(当模型测试完成时,分支2012.05.01将合并为主)

在我们的自动脚本(ant)中运行我们的模型部署,我们只是从我们的分支机构“模型”结账。这样我们就不必更改我们的脚本,因为我们更改了模型测试中的哪个分支,并找出我们进行模型测试的视图就像确定“模型”分支引用哪个分支一样简单。

有什么方法可以在git中做类似的事情吗?

编辑:人们在这里感到困惑。

  1. 我想要一个分支的别名。分支,而不是提交。
  2. “Branch 2012.05.01”指2012.05.01将要发货的分支机构,并不代表2012.05.01时刻
  3. 我想要分支2012.05.01的别名。 Branch 2012.05.01是一个集成分支,它经常被修改。但我不想将其作为Branch 2012.05.01引用,我想将其称为“模型”。这样,我可以将别名更改为“Branch 2012.07.11”,它将从该分支获取最新代码,而无需更改任何结帐代码脚本。

3 个答案:

答案 0 :(得分:39)

请参见此处:https://stackoverflow.com/a/549949/606723

  

您可以像Greg建议的那样重命名主分支中继,或者您   也可以创建一个主干,它是对主人的符号引用   分支,以便git和svn用户都拥有' main'分支,他们   习惯了。

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

请注意,主干不是头等公民。如果你结帐主干和   执行你将实际掌握的git状态,但你可以   在您使用分支名称的所有地方使用trunk命令(日志,   合并等。)。

答案 1 :(得分:3)

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(使用nubmers代替日期以简洁起见)。您开始的任何工作,从版本2.1标记开始。将工作合并到int-version2.1中。其他人也会这样做。

答案 2 :(得分:0)

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

我为每个prod版本的商店状态使用了标签。