我在GitHub repo中有一个公共PHP项目,它只包含一个分支(master)。

我想有一个单独的分支/分支,这是我的私人(我已经支付了私人GitHub回购)。我希望能够将私有分支/分支的更改合并到公共回购,反之亦然。

考虑到这一点,以下是我的问题:

我能在公共回购上有一个私人分支机构吗? 我能把我自己的公共回购分叉到我自己的私有分支/分叉吗? 如果以上两种情况都是可能的,那么哪一种是最好的方式呢?如果都不是,我该怎么做?


当前回答

有可能在公共回购上设立私人分支机构吗?

在GitHub上,你的存储库要么是公共的,要么是私有的;你不能选择性地“私有化”一个分支机构。

我能把我自己的公共回购分叉到我自己的私有分支/分叉吗?

你可以将你的公共回购复制到你的本地机器,根据需要分支,而不是简单地将你的“私有”分支推到上游(通过指定哪个分支推到origin: git push origin master或git push origin branch-i-want-to-be-public:master)。

哪一种方法是最好的/我应该怎么做?

为了利用GitHub的公共和私有开发,我建议在GitHub中分叉你的公共分支,将新分叉的设置改为“私有”,然后将私有版本克隆到你的本地机器上。当你准备好公开更改时,将所有内容推到GitHub上的私有分支,然后使用拉请求有选择地将分支复制到公共回购。

要在GitHub上使存储库私有,您必须有一个升级的(付费)帐户。如果你只是想使用免费帐户,你仍然可以使用我建议的第一个过程——克隆公共到本地机器,分支,并将特定的“公共”分支推到原点——而不需要私人回购。

如果你有一个付费的GitHub账户,或者正在使用另一个提供公共和私人分叉和拉请求的服务(如BitBucket),那么你可以使用上述方法中的任何一种来公开你的代码。

其他回答

复制你的回购。 在GitHub上使复制的回购成为私有的。 将私有回购复制到您的机器 添加一个远程到你的公共回购(git remote Add public git@github.com:…) 将带有用于公共回购的提交的分支推到新的公共远程。(确保你不会意外地提交私有代码) 你可以使用'git fetch public'对你的公共回购进行更改,然后在本地合并它们并推送到你的私有回购(origin remote)。

有可能在公共回购上设立私人分支机构吗?

在GitHub上,你的存储库要么是公共的,要么是私有的;你不能选择性地“私有化”一个分支机构。

我能把我自己的公共回购分叉到我自己的私有分支/分叉吗?

你可以将你的公共回购复制到你的本地机器,根据需要分支,而不是简单地将你的“私有”分支推到上游(通过指定哪个分支推到origin: git push origin master或git push origin branch-i-want-to-be-public:master)。

哪一种方法是最好的/我应该怎么做?

为了利用GitHub的公共和私有开发,我建议在GitHub中分叉你的公共分支,将新分叉的设置改为“私有”,然后将私有版本克隆到你的本地机器上。当你准备好公开更改时,将所有内容推到GitHub上的私有分支,然后使用拉请求有选择地将分支复制到公共回购。

要在GitHub上使存储库私有,您必须有一个升级的(付费)帐户。如果你只是想使用免费帐户,你仍然可以使用我建议的第一个过程——克隆公共到本地机器,分支,并将特定的“公共”分支推到原点——而不需要私人回购。

如果你有一个付费的GitHub账户,或者正在使用另一个提供公共和私人分叉和拉请求的服务(如BitBucket),那么你可以使用上述方法中的任何一种来公开你的代码。

创建公共库(上游)的私有分支(下游):

初始化存储库

$ git init private-repo
$ cd private-repo

添加遥控器

$ git remote add upstream git@github.com:<username>/public-repo.git
$ git remote add origin git@github.com:<username>/private-repo.git
$ git remote --verbose

最初的承诺

$ git commit --allow-empty --message "Initial commit"
$ git push --set-upstream origin master

创建开发分支

$ git checkout -b develop
$ git push --set-upstream origin develop
$ git branch --all

将上游合并到开发分支

$ git fetch upstream master
$ git merge --allow-unrelated-histories upstream/master
$ git push

仓库的一些变化…

# Do some changes...
$ git add .
$ git commit -m "Some changes"
$ git push

应用上游变更…

$ git fetch upstream master
$ git log --all --graph --oneline
$ git merge upstream/master
$ git push

合并开发分支到主

$ git switch master
$ git merge develop
$ git push
$ git log --all --graph --oneline

下一个克隆:

克隆存储库

$ git clone git@github.com:<username>/private-repo.git
$ cd private-repo

添加上游远程

$ git remote add upstream git@github.com:<username>/public-repo.git
$ git remote --verbose

切换到开发分支并获得上游变更

$ git switch develop
$ git fetch upstream master
$ git log --all --graph --oneline
$ git merge upstream/master

https://gist.github.com/amir-saniyan/a3c76b7e545e3d84f82f27e6c6579245

1)。有可能在公共回购上设立私人分支机构吗

据我所知,没有。

2)。我可以将自己的公共回购转入自己的私人分支机构吗

不,你不能把一个完整的回购(1-n个分支)分叉到一个分支。实际上你可以,只要你把整个回购的一个分支分叉。只需将其添加为远程或从克隆开始。

您可能还对稀疏签出感兴趣。

3.) 如果以上两种情况都是可能的,那么哪一种是最好的前进方式呢

n/a

4)。如果两者都不可能,我该怎么办?

n/a

还有另一个解决方案,我发现更好,因为它不会导致重复回购在同一台机器上。

用你想要保密的东西做一个分支。 在GitHub上创建一个新的回购,设置为私有。 添加新的GitHub回购作为第二个远程到您机器上的回购。 将私有分支推到第二个远程。

最终结果是1个存储库和2个远程。一个公共的,一个私人的。 只是需要小心你推所以相应地命名。