Introduction
With the distributed nature of Git and the many existing hosting options available for Git, it is very easy to share the history between machines when they are connected through a network. In cases where the machines that need to share history are not connected or can't use the transport mechanisms supported, Git provides other methods to share the history. Git provides an easy way to format patches from the existing history, sending those with an e-mail and applying them to another repository. Git also has a bundle concept, where a bundle that contains only part of the history of a repository can be used as a remote for another repository. Finally, Git provides a simple and easy way to create an archive for a snapshot of the folder/subfolder structure for a given reference.
With these different methods provided by Git, it becomes easy to share the history between repositories, especially where the normal push/pull methods are not available.