41

情况:

我有一个主仓库,其中有一个主开发分支和许多从中萌芽的“实验”分支(例如,exp1exp2)。这些实验分支的目的是充当生成数值结果的实验​​的占位符。我记录了实验分支的分支名称(和提交 ID),以便我可以返回到提交以准确查看结果背后的代码和历史记录。

但是,现在,有太多的实验分支,以至于很难看到主树。因此,我正在重新考虑将占位符保留在每组结果(即每个实验)背后的代码的策略。显然,我可以只保存每个分支的工作目录,但保留提交历史记录也会很好。

可能的解决方案:

解决此问题的一种方法是将实验分支移动到它们自己的独立存储库中,每个存储库都植根于 dev 分支的提交历史记录中适当节点的子节点。这是我的意思的说明:

在此处输入图像描述

单击此处查看更大版本的图像(在 imgur.com 上)。

因此,例如,对于 branch exp1,我想将提交导出到以 commitA->B->C为根的单独存储库A。然后,我可以只记录提交的哈希值,P1以便我知道exp1分支的起源。

问题:

我怎样才能做到这一点?

更好的问题:

另一方面,我强烈怀疑有一个更好的策略来做我想做的事情——即整理树以进行目视检查,但将占位符保留在先前的分支上,以便我可以在需要时返回它们。那么,任何人都可以为此推荐一个策略吗?

4

1 回答 1

34

这是另一种选择:在删除分支名称之前使用非分支引用来保存分支提示。

由于这些是非分支引用,因此它们不会出现在git branch输出中,也不会出现在 and 显示的内容中git log --branchesgitk --branches例如。但是,它们将显示在--all列表中,并将保留存储库对象。

要创建或更新非分支引用,请使用git update-ref. 选择一个refs/您认为不会与未来使用冲突的名称空间(当前用途是refs/heads/用于分支、refs/tags/标签、refs/remotes/远程分支、refs/notes/注释和refs/stash存储)。

于 2014-08-07T02:24:40.373 回答