矿山OSS项目的私人和公共git回购

矿山OSS项目的私人和公共git回购,git,version-control,workflow,github,Git,Version Control,Workflow,Github,在stackoverflow中也有类似的问题,但没有一个是我要问的,至少我找不到 我正在启动一个OSS项目,我想在github上公开共享它。但我也希望在我的服务器上有一个私有远程回购。公共回购协议用于项目的公共版本,而私人回购协议用于内部版本,尚未准备好发布。显然,公开回购协议永远都可能是私人回购协议的旧版本,而私人回购协议的内容在准备就绪之前不会推送到公众手中 我在网上搜索了一下,发现一些人提出了一个与我想要的工作流程非常相似的工作流程。这是他们解释一切的博客帖子的链接: 我喜欢它的一切,除了

在stackoverflow中也有类似的问题,但没有一个是我要问的,至少我找不到

我正在启动一个OSS项目,我想在github上公开共享它。但我也希望在我的服务器上有一个私有远程回购。公共回购协议用于项目的公共版本,而私人回购协议用于内部版本,尚未准备好发布。显然,公开回购协议永远都可能是私人回购协议的旧版本,而私人回购协议的内容在准备就绪之前不会推送到公众手中

我在网上搜索了一下,发现一些人提出了一个与我想要的工作流程非常相似的工作流程。这是他们解释一切的博客帖子的链接:

我喜欢它的一切,除了在github上公开回购的完全压扁的承诺。我也有点不喜欢这样一种情况,即在合并到public之后,他们必须将所有内容重新合并到master和release分支中,尽管正如他们积极断言的那样,那里没有真正的更改

我的问题是,公开回购历史记录仅仅是一系列压缩的承诺,丢失了其中所有逻辑变化的细节,这真的很糟糕吗?这对我来说似乎很不自然,我也没有看到太多,但可能还没那么糟糕,或者我可以在不使用
--squash
参数的情况下采用此工作流

另外,从github_master到master和release分支的重新合并阶段如何?我想他们需要它是因为被压扁了。如果我决定不挤压,那么我认为这是不必要的,但我不确定


或者,有人能提出一种不同的方法吗?考虑到,如果有人提出我的github回购协议,我也可能希望接受其他人的捐款。

与其走这条路,不如将所有更改推送到github,但在“主”以外的分支中——这样,人们会默认看到“安全”分支,但不会丢失历史记录


如果你真的想保守你的开发分支的秘密,你可以按照我所描述的那样做,但不要推动开发分支——开发分支只会是你机器的本地分支。

与其走这条路,不如把你所有的更改都推到Github上,但是在“master”以外的分支上——这样,人们就会看到“安全”了默认情况下进行分支,但不会丢失历史记录


如果你真的想对你的开发分支保密,你可以按照我描述的那样做,但不要推动开发分支-开发分支将只在你的机器上本地。

如果你只是不想让未发布的更改在发布之前可见,并且不介意中间提交在发布后变为可见,那么这就相当简单了。你可以把你的私人分支机构当作。。。嗯,一个普通的分支。只需确保github上不存在私有分支名称(但在私有repo中存在),默认推送设置就可以了


但是,如果您确实想隐藏历史,那么,这就是基于挤压的工作流的全部内容。在这种情况下,如果您合并外部分支,最好避免挤压它们的提交。

如果您只是不希望未发布的更改在发布之前可见,并且不介意中间提交在发布后变为可见,那么这相当简单。你可以把你的私人分支机构当作。。。嗯,一个普通的分支。只需确保github上不存在私有分支名称(但在私有repo中存在),默认推送设置就可以了


但是,如果您确实想隐藏历史,那么,这就是基于挤压的工作流的全部内容。在这种情况下,如果合并外部分支,最好避免挤压它们的提交。

您的思路很好。如果不想,您不需要挤压提交。根据你的私人分支,你仍然想把它推到某个地方,这样你就有了一个备份。你可以把它推到U盘上的一个裸克隆,或者像unfuddle.com这样的地方,在那里你有免费的私有git回购空间。然后,您将设置两个遥控器:一个到Github,另一个到U盘或解模糊

此外,请记住,较大的文件(如第三方DLL)可能会扩大您的回购协议的规模,可能会阻止您推动免费解冻。在这种情况下,使用子模块将这些文件保存在公共github repo中,并且只将实际源代码存储在您将要推送的更高级别的repo中


希望这有帮助。

你的思维方式很好。如果不想,您不需要挤压提交。根据你的私人分支,你仍然想把它推到某个地方,这样你就有了一个备份。你可以把它推到U盘上的一个裸克隆,或者像unfuddle.com这样的地方,在那里你有免费的私有git回购空间。然后,您将设置两个遥控器:一个到Github,另一个到U盘或解模糊

此外,请记住,较大的文件(如第三方DLL)可能会扩大您的回购协议的规模,可能会阻止您推动免费解冻。在这种情况下,使用子模块将这些文件保存在公共github repo中,并且只将实际源代码存储在您将要推送的更高级别的repo中


希望这能有所帮助。

是的,那很好,只是我不想失去我的开发分支,以防我的笔记本电脑发生灾难。这是很重要的,因为这将是一个项目,我会在我的业余时间做,有些东西可能会在私人开发上停留一段时间。另外,我有一个完美的服务器,可以拥有私人远程回购,所以不利用这个机会是愚蠢的。@Ernesto-你可以推到>1个服务器;把私人分支机构推到你的私人回购协议,把公共分支机构推到Github是的,那很好,除了