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