stackoverflow中有类似的问题,但没有一个是我要问的问题,至少我找不到。
我正在开始一个OSS项目,我想在github上公开分享它。但我也想在我的服务器上安装一个私人远程仓库。公共仓库用于项目的公共版本,私有仓库用于内部版本,尚未准备好发布。显然,公共回购将永远是私有的旧版本,而私有内容在它们准备好之前不会被推向公众。
我在网上搜索,发现有些人提出了与我想要的工作流程非常相似的工作流程。这是他们解释所有内容的博客文章的链接:http://www.braintreepayments.com/devblog/our-git-workflow
我喜欢它的一切,除了在github上进入公共仓库的完全压扁的提交。我也不喜欢这样的部分,在合并到公众之后,他们必须将所有东西重新合并到主人和释放分支中,尽管他们肯定断言,在那里没有真正的变化。
我的问题是,拥有一个公开的回购历史是否真的很糟糕,这只是一系列压扁的提交,已经失去了其中逻辑变化的所有细节?这对我来说似乎不自然,我没有看到这么多,但也许并没有那么糟糕,否则我可以在没有--squash
参数的情况下采用这个工作流程。
另外,从github_master重新合并到master和release分支的阶段呢?我猜他们需要它,因为压扁了提交。如果我决定不压扁,那么我认为这不是必需的,但我不确定。
否则,任何人都可以提出不同的方法吗?考虑到如果有人问我的github回购,我也可能想接受其他人的贡献。
答案 0 :(得分:2)
为什么不将这些更改推送到Github,而不是在'master'之外的分支中 - 这样,人们会默认看到“安全”分支,但是你不会失去历史。
如果你真的想让你的dev分支机密,你可以做我正在描述的内容,但不要推动dev分支 - dev分支只对你的机器是本地的。
答案 1 :(得分:2)
如果您不希望未发布的更改在发布之前可见,并且不介意中间提交一旦发布就会变得可见,那么这很简单。你可以把你的私人分支视为......好吧,一个普通的分支。只要确保私有分支名称在github上不存在(但确实存在于私有仓库中),默认的推送设置应该处理好事情。
如果做想要隐藏历史记录,那么,这就是基于壁球的工作流程的全部内容。在这种情况下,如果你合并外部分支,最好避免压缩他们的提交。
答案 2 :(得分:1)
你的思路很好。如果你不想,你不需要压缩提交。根据您的私人分支机构,您仍然希望将其推送到某个位置,以便进行备份。您可以将它推送到USB记忆棒上的裸克隆或像unfuddle.com这样有免费私人git repo空间的地方。然后你就可以设置2个遥控器:一个用于Github,另一个用于一个usb棒或者不用。
另外,请记住,像第三方DLL这样的较大文件可能会破坏您的回购邮件的大小,可能会阻止您免费推送。在这种情况下,使用子模块将这些文件保存在公共github存储库中,并仅将您的实际源存储在更高级别的存储库中,您将推送到这些存储库中。
希望这有帮助。