在发布分支

时间:2017-05-02 17:51:46

标签: git

我有一个包含许多提交的git项目。

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

我想将此推送到发布分支,其中只能看到标记的提交。 e.g。

A-d-H

我尝试使用rebase和squash merge,但似乎没有任何效果。 我读到,一旦将提交推送到git服务器,就不可能使用rebase,这可能是我的问题。 有人提请好吗?

修改

我发现有点难看但可用的解决方案。 我创建了一个发布存储库和一个小脚本来检查发布提交并将其复制到发布存储库并将其提交到那里。

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

1 个答案:

答案 0 :(得分:0)

假设您希望看到的是一个直接分支,只需要发布一些修订版,并且与用于开发的分支的历史记录存在 no 关系,你可以用两种方式做到这一点:

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

    • 获取修订版G的树对象(git cat-file -p G)
    • 创建修订对象:git commit-tree -p A -m“这是修订版的注释”tree-object-for-G-from-git-cat-file
    • 将分支指向此新版本
  • 通过签出您想要的树并提交。所以,请说明结帐A:

    • git checkout A
    • git checkout G - 。 #checkout修订版G项目的全部内容...不确定文件是否会被删除/重命名...小心
    • git commit -m“修订评论”
    • 在此修订版上创建一个新分支,您就完成了。