Github does not allow the creation of private forks for public repositories.
The correct way of creating a private fork by duplicating the repo
-
Create a bare clone of the repository. (This is temporary and will be removed so just do it wherever.)
git clone --bare https:/github.com/user/repo-name.git
-
[Create a new private repository on Github name it
repo-name. -
Mirror-push your bare clone to your new
repo-namerepository.Replace
<your_username>with your actual Github username in the url below.cd repo-name.git git push --mirror [email protected]:<your_username>/repo-name.git
-
Remove the temporary local repository you created in step 1.
cd .. rm -rf repo-name.git -
You can now clone your
repo-namerepository on your machine (in my case in thecodefolder).cd ~/code git clone [email protected]:<your_username>/repo-name.git
-
If you want, add the original repo as remote to fetch (potential) future changes. Make sure you also disable push on the remote (as you are not allowed to push to it anyway).
git remote add upstream https:/github.com/user/repo-name.git git remote set-url --push upstream DISABLE
You can list all your remotes with
git remote -v. You should see:origin [email protected]:<your_username>/repo-name.git (fetch) origin [email protected]:<your_username>/repo-name.git (push) upstream https:/github.com/user/repo-name.git (fetch) upstream DISABLE (push)When you push, do so on
originwithgit push origin.When you want to pull changes from
upstreamyou can just fetch the remote and rebase on top of your work.git fetch upstream git rebase upstream/master
And solve the conflicts if any