Having a private branch of a public repo on GitHub?

社会主义新天地 提交于 2019-12-17 10:08:45

问题


I have a public PHP project in a GitHub repo, which contains just one branch (master).

I want to have a separate branch/fork that is private for me (I have paid for private GitHub repos). I would like to be able to merge changes from the private branch/fork to the public repo, and vice versa.

With that in mind, here are my questions:

  1. Can I have a private branch on a public repo?
  2. Can I fork my own public repo into my own private branch/fork?
  3. If both of the above are possible, which is the best way forward? If neither, how should I proceed?

回答1:


Is it possible to have a private branch on a public repo?

On GitHub, your repository is either public or private; you cannot selectively "privatize" just a branch.

Can I fork my own public repo into my own private branch/fork?

You can clone your public repo to your local machine, branch as needed, and simply not push your "private" branches upstream (by specifying which branch to push to origin: git push origin master or git push origin branch-i-want-to-be-public:master).

Which is the best way forward/how should I proceed?

In order to take advantage of GitHub for both your public and private development, I would suggest forking your public branch within GitHub, changing the settings of the new fork to "Private", and then cloning the private version down to your local machine. When you're ready to make changes public, push everything up to your private fork on GitHub and then use pull requests to selectively copy branches to the public repo.

To make a repository private on GitHub, you must have an upgraded (paid) account. If you're only rocking the free account, you can still use the first process I suggested — clone public to local machine, branch, and push specific "public" branches to origin — without needing a private repo.

If you have a paid GitHub account, or are using another service that offers public and private forks and pull requests (such as BitBucket), then you can use either of the above approaches to make your code public.




回答2:


  1. Duplicate your repo.
  2. Make the duplicated repo a private one on GitHub.
  3. Clone the private repo to your machine
  4. Add a remote to your public repo (git remote add public git@github.com:...)
  5. Push branches with commits intended for your public repo to that new public remote. (make sure you don't accidentally commit private-only code)
  6. You can bring in changes to your public repo using 'git fetch public' and then merge them locally and push to your private repo (origin remote).



回答3:


1.) Is it possible to have a private branch on a public repo

From what I know, no.

2.) Can I fork my own public repo into my own private branch

No, you can't fork a full repo (1-n branches) into a single branch. Well actually you could, if you just fork the one branch of the full repo. Just add it as a remote or start from a clone.

You might also be interested in Sparse checkouts.

3.) If both the above the are possible which is the best way forward

n/a

4.) If neither are possible how should I proceed?

n/a



来源:https://stackoverflow.com/questions/7983204/having-a-private-branch-of-a-public-repo-on-github

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!