4

我想在推送时保持一些提交的私密性,所以我希望它们被捆绑到远程端的一个大提交中。在本地,他们应该保持分裂。

例如,一个用例是静态博客上的工作。草稿步骤应在本地提交和跟踪,但在推送时我只想发布已发布的版本。

将接受 git 和/或 mercurial 中的解决方案。

4

2 回答 2

5

在 Mercurial 2.1 及更高版本中,您可以使用阶段将变更集标记为“秘密”。这会将所有传出的变更集标记为机密:

$ hg phase -f --secret "outgoing()"

默认情况下不会推送或拉取秘密变更集,因此在该命令之后不会有任何传出变更集 - 根据需要进行调整以将正确的变更集标记为秘密。

您还说您希望将变更集作为远程存储库中的一个大提交。为此,您可以使用与 Mercurial 2.3 及更高版本捆绑的histedit 扩展。使用该--keep标志,以便在折叠它们时它不会删除原始变更集。

于 2012-08-28T12:56:23.070 回答
4

这个想法是在专用分支上进行提交,但git merge --squashmaster(或您打算推送的任何其他公共分支)上进行提交,因为它会产生一个大提交。
然后,您将推master送远程存储库。

请参阅“在 git 中,有什么区别?merge --squashrebase

于 2012-08-28T10:49:29.793 回答