268
votes

Someone gave me access to one of their private repo on Github. What I want to do is to fork that project into my own account, so I could make use of Github's pull request feature.

I only have a basic account on Github, so I cannot make private repos on my own, but if I fork someone else's private repo into my account, is it going to appear in my account as public?

4

4 Answers

298
votes

No. You can fork it and it still remains private.

Private collaborators may fork any private repository you’ve added them to without their own paid plan. Their forks do not count against your private repository quota.

https://github.com/plans

35
votes

When you revoke access for a member on the main branch (master repo), it will yank the forked repo as well. So, if you added members to a team, and they forked from the master repo, always ensure that you either have merged their changes or you have a copy of their changes before you remove them from the team, as the members forked repo gets deleted when he is removed from the team and you wont have a way to fetch his changes (if only you care about those).

9
votes

Here's GitHub's answer:

https://help.github.com/articles/what-happens-to-forks-when-a-repository-is-deleted-or-changes-visibility/#deleting-a-private-repository

Deleting a private repository

When you delete a private repository, all of its private forks are also deleted.

2
votes

Real answer.

there are three types of repositories. private, public, and internal. Internal ones require an enterprise account, so we'll forget about them for now. :)

Any fork of one of those retains it's type. Forks of public repositories are public, and forks of private ones are private. Removing access to a private repository deletes that person's fork.

Deleting a private repository deletes all forks of it, which are also private. If you wish to keep a copy, you have to clone and publish it yourself. Which might not be allowed by the code's license. Deleting a PUBLIC repository makes all of the direct forks new masters.

Only the master can be changed from private to public, or vice versa.

Doing either disconnects all forks, and makes them into new masters, all retaining their existing type.

If you wish to delete your private repository while not deleting the other (private) forks, make it public first, which will make all of the private forks into private masters, then delete the repository.

TL:DR; If the repository is public, your fork is public, and stays forever. If the original is private, your fork is private and will vanish if the master does or you do not have access anymore, and you will have to clone and update repeatedly to be sure of keeping it.

This should hopefully answer all questions about forking and deleting. :)