2017-05-02 87 views
0

我有一个提交数量的git项目。隐藏git提交发布分支

A-B-C-d-E-F-G-H-1

我想按这个到释放分支,其中仅标签提交可以看出。例如

A-d-H

我试图与底垫和壁球合并,但似乎没有任何工作。 我读过rebase是不可能的,一旦提交已被推送到git服务器,这可能是我的问题。 有人有好的提示吗?

编辑

我发现有点难看但可用的解决方案。 我创建了一个发布版本库和一个小脚本,用于检查发布提交并将其复制到发布版本库并在此处提交。

并感谢回复说实际上是不可能的。

+1

你不能“躲”承诺,你要么让他们在你的仓库,或者你没有。使用merge或rebase压缩它们将删除它们,将它们的更改折叠到另一个提交中。那是你要的吗?除非您将它们的副本保留在“视线之外”的某个位置,否则您将失去原始提交。 –

+0

你可能想编辑这篇文章,并澄清你的意思是“看到”和“隐藏”。如果您只想采取同样的一系列更改并将它们压缩为3个提交,那么这是一回事,如果您期望以某种方式在文件中进行更改,但提交不再存在于日志中,但提交仍然存在 - 这是完全不同的,不可能的。 –

回答

0

假设你想看到的是一个只有几个修订版的直接分支,你想发布,并且有没有与你用于开发的分支机构的历史关系,你可以这样做有两种方法:

  • 通过使用commit-tree。使用git commit-tree,您可以创建指定父代(或父代)和树(修订版中的文件内容)的修订版。 您可以从您喜欢的任何修订版本中指定树状结构,并且您可以提供希望新版本具有的父级结构树。这样你可以“跳过”所有分支历史,如果这是你想要的。不漂亮,但可能。如果你想使用树修订G的具有A父创建M修订版:

    • 获取G版本的树对象(GIT猫文件-p G)
    • 创建修订对象:混帐提交树-p是-M “下面是修改注释” 树对象为-G-从-的git-CAT-文件
    • 点,转移到这个新版本
  • 由c砍掉你想要的并承诺的树。所以,说你签上修订版A:

    • git的结帐
    • git的结帐G - #检查修订G中项目的全部内容...不确定文件是否将被删除/重命名......小心
    • git commit -m“修改注释”
    • 在此修订版上创建新分支,你完成了。