在没有所有先前提交对象的情况下发布分支的HEAD

时间:2009-08-26 17:52:25

标签: git

我启动了一个本地git存储库。现在,在这一点上,我想发布它,对github说,但我不想发布项目的整个历史,只是最新版本。

特别是,我想创建一个本地“pub”分支,对其进行一些修改(可能隐藏敏感信息),并发布“pub”分支。

如果我使用普通推送做我所说的话,我会发现自己将所有“发布”历史记录发布到远程存储库,这是我不想要的,因为敏感信息也会被发布。

如何实现这一目标?

谢谢!

3 个答案:

答案 0 :(得分:2)

看看this question

您也可以使用不同的文件夹替换源树中的.git文件夹,并在要发布时检查代码。

但是,由于Git的工作方式,您无法在不共享历史记录的情况下在同一Git存储库中设置分支。存储库具有初始状态的根提交,而所有其他提交只是针对该提交的增量。

但是当我们参与其中时,如果您不想公开版本控制历史记录,为什么不简单地将代码作为带有版本号的tarball发布,没有理由将Git拖入其中:)

答案 1 :(得分:2)

分支必须将其所有历史记录导出为推送。

在我看来,解决方案是创建一个新的git存储库,其中包含最新的签出。然后,将该存储库添加为当前存储库的远程存储库。让您自己的一方将生产同步到开发,并使用git patch applygit rebase -i将内容转移到生产中。

这将保留您不希望每次出现时都暴露的私人开发历史记录。

答案 2 :(得分:0)

我想我正试图让git去做那些不应该处理的事情:)

我想出的最简单的解决方案是:

1 - 创建主人的“公共草案”分支。 2 - 对其进行每一次修改,以使您的代码可以发布,即隐藏密码和类似的东西。后续合并将很好地处理这些修改。 3 - 准备好后,将公共草案与另一个跟踪远程存储库的git存储库的主机进行rsync。 4 - 提交所有更改并将其推送到远程存储库。

我想知道另一个存储库是否可以被名为“public”的分支替换,该分支永远不会从其他分支合并,而只会合并回“public-draft”分支。这允许合并公共存储库中其他人引入的更改。

谢谢大家。