git-bundle(1)
=============

NAME
----
git-bundle - Move objects and refs by archive


SYNOPSIS
--------
[verse]
'git-bundle' create <file> [git-rev-list args]
'git-bundle' verify <file>
'git-bundle' list-heads <file> [refname...]
'git-bundle' unbundle <file> [refname...]

DESCRIPTION
-----------

Some workflows require that one or more branches of development on one
machine be replicated on another machine, but the two machines cannot
be directly connected so the interactive git protocols (git, ssh,
rsync, http) cannot be used.  This command provides support for
git-fetch and git-pull to operate by packaging objects and references
in an archive at the originating machine, then importing those into
another repository using linkgit:git-fetch[1] and linkgit:git-pull[1]
after moving the archive by some means (i.e., by sneakernet).  As no
direct connection between repositories exists, the user must specify a
basis for the bundle that is held by the destination repository: the
bundle assumes that all objects in the basis are already in the
destination repository.

OPTIONS
-------

create <file>::
       Used to create a bundle named 'file'.  This requires the
       git-rev-list arguments to define the bundle contents.

verify <file>::
       Used to check that a bundle file is valid and will apply
       cleanly to the current repository.  This includes checks on the
       bundle format itself as well as checking that the prerequisite
       commits exist and are fully linked in the current repository.
       git-bundle prints a list of missing commits, if any, and exits
       with non-zero status.

list-heads <file>::
       Lists the references defined in the bundle.  If followed by a
       list of references, only references matching those given are
       printed out.

unbundle <file>::
       Passes the objects in the bundle to linkgit:git-index-pack[1]
       for storage in the repository, then prints the names of all
       defined references. If a reflist is given, only references
       matching those in the given list are printed. This command is
       really plumbing, intended to be called only by
       linkgit:git-fetch[1].

[git-rev-list-args...]::
       A list of arguments, acceptable to git-rev-parse and
       git-rev-list, that specify the specific objects and references
       to transport.  For example, "master~10..master" causes the
       current master reference to be packaged along with all objects
       added since its 10th ancestor commit.  There is no explicit
       limit to the number of references and objects that may be
       packaged.


[refname...]::
       A list of references used to limit the references reported as
       available. This is principally of use to git-fetch, which
       expects to receive only those references asked for and not
       necessarily everything in the pack (in this case, git-bundle is
       acting like linkgit:git-fetch-pack[1]).

SPECIFYING REFERENCES
---------------------

git-bundle will only package references that are shown by
git-show-ref: this includes heads, tags, and remote heads.  References
such as master~1 cannot be packaged, but are perfectly suitable for
defining the basis.  More than one reference may be packaged, and more
than one basis can be specified.  The objects packaged are those not
contained in the union of the given bases.  Each basis can be
specified explicitly (e.g., ^master~10), or implicitly (e.g.,
master~10..master, master --since=10.days.ago).

It is very important that the basis used be held by the destination.
It is okay to err on the side of conservatism, causing the bundle file
to contain objects already in the destination as these are ignored
when unpacking at the destination.

EXAMPLE
-------

Assume two repositories exist as R1 on machine A, and R2 on machine B.
For whatever reason, direct connection between A and B is not allowed,
but we can move data from A to B via some mechanism (CD, email, etc).
We want to update R2 with developments made on branch master in R1.
We set a tag in R1 (lastR2bundle) after the previous such transport,
and move it afterwards to help build the bundle.

in R1 on A:

------------
$ git-bundle create mybundle master ^lastR2bundle
$ git tag -f lastR2bundle master
------------

(move mybundle from A to B by some mechanism)

in R2 on B:

------------
$ git-bundle verify mybundle
$ git-fetch mybundle  refspec
------------

where refspec is refInBundle:localRef


Also, with something like this in your config:

[remote "bundle"]
    url = /home/me/tmp/file.bdl
    fetch = refs/heads/*:refs/remotes/origin/*

You can first sneakernet the bundle file to ~/tmp/file.bdl and
then these commands:

------------
$ git ls-remote bundle
$ git fetch bundle
$ git pull bundle
------------

would treat it as if it is talking with a remote side over the
network.

Author
------
Written by Mark Levedahl <mdl123@verizon.net>

GIT
---
Part of the linkgit:git[7] suite
