summaryrefslogtreecommitdiff
path: root/Documentation/git-send-pack.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/git-send-pack.txt')
-rw-r--r--Documentation/git-send-pack.txt37
1 files changed, 28 insertions, 9 deletions
diff --git a/Documentation/git-send-pack.txt b/Documentation/git-send-pack.txt
index 6192c5dc41..5ed25f54d1 100644
--- a/Documentation/git-send-pack.txt
+++ b/Documentation/git-send-pack.txt
@@ -9,12 +9,12 @@ git-send-pack - Push missing objects packed.
SYNOPSIS
--------
-'git-send-pack' [--all] [--exec=<git-receive-pack>] [<host>:]<directory> [<head>...]
+'git-send-pack' [--all] [--force] [--exec=<git-receive-pack>] [<host>:]<directory> [<ref>...]
DESCRIPTION
-----------
Invokes 'git-receive-pack' on a possibly remote repository, and
-updates it from the current repository, sending named heads.
+updates it from the current repository, sending named refs.
OPTIONS
@@ -29,6 +29,13 @@ OPTIONS
Instead of explicitly specifying which refs to update,
update all refs that locally exist.
+--force::
+ Usually, the command refuses to update a remote ref that
+ is not an ancestor of the local ref used to overwrite it.
+ This flag disables the check. What this means is that
+ the remote repository can lose commits; use it with
+ care.
+
<host>::
A remote host to house the repository. When this
part is specified, 'git-receive-pack' is invoked via
@@ -37,7 +44,7 @@ OPTIONS
<directory>::
The repository to update.
-<head>...:
+<ref>...:
The remote refs to update.
@@ -48,24 +55,25 @@ There are three ways to specify which refs to update on the
remote end.
With '--all' flag, all refs that exist locally are transfered to
-the remote side. You cannot specify any '<head>' if you use
+the remote side. You cannot specify any '<ref>' if you use
this flag.
-Without '--all' and without any '<head>', the refs that exist
+Without '--all' and without any '<ref>', the refs that exist
both on the local side and on the remote side are updated.
-When '<head>'s are specified explicitly, it can be either a
+When '<ref>'s are specified explicitly, it can be either a
single pattern, or a pair of such pattern separated by a colon
':' (this means that a ref name cannot have a colon in it). A
single pattern '<name>' is just a shorthand for '<name>:<name>'.
+
Each pattern pair consists of the source side (before the colon)
-and the destination side (after the colon). The ref that is
+and the destination side (after the colon). The ref to be
pushed is determined by finding a match that matches the source
side, and where it is pushed is determined by using the
destination side.
- - It is an error if <src> does not match exactly one of local
- refs.
+ - It is an error if <src> does not match exactly one of the
+ local refs.
- It is an error if <dst> matches more than one remote refs.
@@ -78,6 +86,17 @@ destination side.
exist in the set of remote refs; the ref matched <src>
locally is used as the name of the destination.
+Without '--force', the <src> ref is stored at the remote only if
+<dst> does not exist, or <dst> is a proper subset (i.e. an
+ancestor) of <src>. This check, known as "fast forward check",
+is performed in order to avoid accidentally overwriting the
+remote ref and lose other peoples' commits from there.
+
+With '--force', the fast forward check is disabled for all refs.
+
+Optionally, a <ref> parameter can be prefixed with a plus '+' sign
+to disable the fast-forward check only on that ref.
+
Author
------