Offline sharing of GIT commits

Let’s say you lost access to a repository but you’re still working in a team on the code.
How do you share GIT commits/branches?

One way to do that it to use git create-patch but the problem with that is that most probably when you’ll apply the patch – hashes will be different. This may be fine, but if when your repo will come back – everyone will be out of sync (in terms of GIT and not in terms of data/code).

Another solution is to use git bundle. git bundle create bumbu.bundle master creates a file bumbu.bundle which can be used as a remote repository. Meaning if you place your file in ~/bumbu.bundle then in your git directory you can do git pull ~/bumbu.bundle master that will pull all changes from that file as from a remote source.

Before pulling or merging data, first it is good to check if the bundle is a valid bundle for your history tree git bundle verify ~/bumbu.bundle.

Safest and easiest way is to create a branch bundle that contains all the commits – this way anyone will be able to use, even those people who have no git history at all. Actually you can do git clone ~/bumbu.bundle -b master folder_name which will do the usual clone.

But the problem with creating a bundle will all branch commits is that it can be quite big. It was at ~20Mb for a Django project with ~150 commits. A solution for that is to create a bundle with only a range of commits git bundle create bumbu.bundle master master~10 (this will bundle only last 10 commits, or 9, have to check as master~10 will not be bundled).

So now you can happily team-code when your GIT server is down.