我想在推送时保持一些提交的私密性,所以我希望它们被捆绑到远程端的一个大提交中。在本地,他们应该保持分裂。
例如,一个用例是静态博客上的工作。草稿步骤应在本地提交和跟踪,但在推送时我只想发布已发布的版本。
将接受 git 和/或 mercurial 中的解决方案。
在 Mercurial 2.1 及更高版本中,您可以使用阶段将变更集标记为“秘密”。这会将所有传出的变更集标记为机密:
$ hg phase -f --secret "outgoing()"
默认情况下不会推送或拉取秘密变更集,因此在该命令之后不会有任何传出变更集 - 根据需要进行调整以将正确的变更集标记为秘密。
您还说您希望将变更集作为远程存储库中的一个大提交。为此,您可以使用与 Mercurial 2.3 及更高版本捆绑的histedit 扩展。使用该--keep
标志,以便在折叠它们时它不会删除原始变更集。
这个想法是在专用分支上进行提交,但git merge --squash
在master
(或您打算推送的任何其他公共分支)上进行提交,因为它会产生一个大提交。
然后,您将推master
送远程存储库。
请参阅“在 git 中,和有什么区别?merge --squash
rebase
”