@@ -23,8 +23,9 @@ the "offline" transfer of Git objects without an active "server"
2323sitting on the other side of the network connection.
2424
2525They can be used to create both incremental and full backups of a
26- repository, and to relay the state of the references in one repository
27- to another.
26+ repository (see the "full backup" example in "EXAMPLES"), and to relay
27+ the state of the references in one repository to another (see the second
28+ example).
2829
2930Git commands that fetch or otherwise "read" via protocols such as
3031`ssh://` and `https://` can also operate on bundle files. It is
@@ -34,8 +35,6 @@ contained within it with linkgit:git-ls-remote[1]. There's no
3435corresponding "write" support, i.e.a 'git push' into a bundle is not
3536supported.
3637
37- See the "EXAMPLES" section below for examples of how to use bundles.
38-
3938BUNDLE FORMAT
4039-------------
4140
@@ -132,7 +131,7 @@ SPECIFYING REFERENCES
132131---------------------
133132
134133Revisions must be accompanied by reference names to be packaged in a
135- bundle.
134+ bundle. Alternatively `--all` can be used to package all refs.
136135
137136More than one reference may be packaged, and more than one set of prerequisite objects can
138137be specified. The objects packaged are those not contained in the
@@ -203,8 +202,6 @@ It is okay to err on the side of caution, causing the bundle file
203202to contain objects already in the destination, as these are ignored
204203when unpacking at the destination.
205204
206- If you want to match `git clone --mirror`, which would include your
207- refs such as `refs/remotes/*`, use `--all`.
208205If you want to provide the same set of refs that a clone directly
209206from the source repository would get, use `--branches --tags` for
210207the `<git-rev-list-args>`.
@@ -216,8 +213,27 @@ bundle.
216213EXAMPLES
217214--------
218215
219- Assume you want to transfer the history from a repository R1 on machine A
220- to another repository R2 on machine B.
216+ We'll discuss two cases:
217+
218+ 1. Taking a full backup of a repository
219+ 2. Transfer the history of a repository to another machine when the two
220+ machines have no direct connection
221+
222+ First let's consider a full backup of the repository. The following
223+ command will take a full backup of the repository in the sense that all
224+ refs are included in the bundle (except `refs/stash`, i.e. the stash):
225+
226+ ----------------
227+ $ git bundle create <file> --all
228+ ----------------
229+
230+ But note again that this is only for the refs, i.e. you will only
231+ include refs and commits reachable from those refs. You will not
232+ include other local state, such as the contents of the index, working
233+ tree, per-repository configuration, hooks, etc.
234+
235+ For the next example, assume you want to transfer the history from a
236+ repository R1 on machine A to another repository R2 on machine B.
221237For whatever reason, direct connection between A and B is not allowed,
222238but we can move data from A to B via some mechanism (CD, email, etc.).
223239We want to update R2 with development made on the branch master in R1.
@@ -321,6 +337,24 @@ You can also see what references it offers:
321337$ git ls-remote mybundle
322338----------------
323339
340+ DISCUSSION
341+ ----------
342+
343+ A naive way to make a full backup of a repository is to use something to
344+ the effect of `cp -r <repo> <destination>`. This is discouraged since
345+ the repository could be written to during the copy operation. In turn
346+ some files at `<destination>` could be corrupted.
347+
348+ This is why it is recommended to use Git tooling for making repository
349+ backups, either with this command or with e.g. linkgit:git-clone[1].
350+ But keep in mind that these tools will not help you backup state other
351+ than refs and commits. In other words they will not help you backup
352+ contents of the index, working tree, per-repository configuration,
353+ hooks, etc.
354+
355+ See also linkgit:gitfaq[7], section "TRANSFERS" for a discussion of the
356+ problems associated with file syncing across systems.
357+
324358FILE FORMAT
325359-----------
326360
0 commit comments