This gist describes how to create private branch (downstream) of a public repository (upstream).
$ 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
For next clones:
$ 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