Shared Repo No History
In this page we're looking at ways of taking an existing repo that potentially has lots of history including maybe some sensitive stuff, and being able to create a shallow fork of the repo that doesn't include all the history, but can be pushed,pulled and merged to and from.
do not blindly merge our master or other branches into Bob's.
If we need ot merge code into Bob's, I am not yet certain what the best technique is
This is definitely an Alpha in terms of a recommended practice, it's a not properly tested
How to do it¶
We do this using an orphan branch
It might look something like this:
Assume we want to create a private repo on Github which is a fork of our main repo.
Let's assume our third party is called Bob
First, create the repo on Github and ensure it's private. The project is called "project name" so we will call the repo
To make our lives simple, we are going to ask Bob to prefix all his branch names with
bob- and we will do the same, our first branch is going to be called
Now we can
1 2 3
cd project-name git checkout master git checkout --orphan bob-master
git add -A git commit -am 'initial commit'
Now we have added the files and create the first commit on this new branch. Now it's time to push it up to Github. To do that, first we need to set up the remote
git remote add github-bob firstname.lastname@example.org:edmondscommerce/project-name-bob.git git push github-bob bob-master
On github you will now have one branch called
bob-master. Bob can clone this repo down, make feature branches etc from
bob-master and ultimately merge them into
bob-master. He can ask us to pull down his work
When Bob has done some work and we want to pull it, simply run
git checkout bob-master git pull github-bob bob-master
We can review Bob's work and ultimately decide to merge it into our master branch etc as normal.