156 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| git-send-pack(1)
 | |
| ================
 | |
| 
 | |
| NAME
 | |
| ----
 | |
| git-send-pack - Push objects over Git protocol to another repository
 | |
| 
 | |
| 
 | |
| SYNOPSIS
 | |
| --------
 | |
| [verse]
 | |
| 'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>]
 | |
| 		[--verbose] [--thin] [--atomic]
 | |
| 		[--[no-]signed|--signed=(true|false|if-asked)]
 | |
| 		[<host>:]<directory> [<ref>...]
 | |
| 
 | |
| DESCRIPTION
 | |
| -----------
 | |
| Usually you would want to use 'git push', which is a
 | |
| higher-level wrapper of this command, instead. See linkgit:git-push[1].
 | |
| 
 | |
| Invokes 'git-receive-pack' on a possibly remote repository, and
 | |
| updates it from the current repository, sending named refs.
 | |
| 
 | |
| 
 | |
| OPTIONS
 | |
| -------
 | |
| --receive-pack=<git-receive-pack>::
 | |
| 	Path to the 'git-receive-pack' program on the remote
 | |
| 	end.  Sometimes useful when pushing to a remote
 | |
| 	repository over ssh, and you do not have the program in
 | |
| 	a directory on the default $PATH.
 | |
| 
 | |
| --exec=<git-receive-pack>::
 | |
| 	Same as --receive-pack=<git-receive-pack>.
 | |
| 
 | |
| --all::
 | |
| 	Instead of explicitly specifying which refs to update,
 | |
| 	update all heads that locally exist.
 | |
| 
 | |
| --stdin::
 | |
| 	Take the list of refs from stdin, one per line. If there
 | |
| 	are refs specified on the command line in addition to this
 | |
| 	option, then the refs from stdin are processed after those
 | |
| 	on the command line.
 | |
| +
 | |
| If `--stateless-rpc` is specified together with this option then
 | |
| the list of refs must be in packet format (pkt-line). Each ref must
 | |
| be in a separate packet, and the list must end with a flush packet.
 | |
| 
 | |
| --dry-run::
 | |
| 	Do everything except actually send the updates.
 | |
| 
 | |
| --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.
 | |
| 
 | |
| --verbose::
 | |
| 	Run verbosely.
 | |
| 
 | |
| --thin::
 | |
| 	Send a "thin" pack, which records objects in deltified form based
 | |
| 	on objects not included in the pack to reduce network traffic.
 | |
| 
 | |
| --atomic::
 | |
| 	Use an atomic transaction for updating the refs. If any of the refs
 | |
| 	fails to update then the entire push will fail without changing any
 | |
| 	refs.
 | |
| 
 | |
| --[no-]signed::
 | |
| --signed=(true|false|if-asked)::
 | |
| 	GPG-sign the push request to update refs on the receiving
 | |
| 	side, to allow it to be checked by the hooks and/or be
 | |
| 	logged.  If `false` or `--no-signed`, no signing will be
 | |
| 	attempted.  If `true` or `--signed`, the push will fail if the
 | |
| 	server does not support signed pushes.  If set to `if-asked`,
 | |
| 	sign if and only if the server supports signed pushes.  The push
 | |
| 	will also fail if the actual call to `gpg --sign` fails.  See
 | |
| 	linkgit:git-receive-pack[1] for the details on the receiving end.
 | |
| 
 | |
| --push-option=<string>::
 | |
| 	Pass the specified string as a push option for consumption by
 | |
| 	hooks on the server side.  If the server doesn't support push
 | |
| 	options, error out.  See linkgit:git-push[1] and
 | |
| 	linkgit:githooks[5] for details.
 | |
| 
 | |
| <host>::
 | |
| 	A remote host to house the repository.  When this
 | |
| 	part is specified, 'git-receive-pack' is invoked via
 | |
| 	ssh.
 | |
| 
 | |
| <directory>::
 | |
| 	The repository to update.
 | |
| 
 | |
| <ref>...::
 | |
| 	The remote refs to update.
 | |
| 
 | |
| 
 | |
| SPECIFYING THE REFS
 | |
| -------------------
 | |
| 
 | |
| There are three ways to specify which refs to update on the
 | |
| remote end.
 | |
| 
 | |
| With `--all` flag, all refs that exist locally are transferred to
 | |
| the remote side.  You cannot specify any '<ref>' if you use
 | |
| this flag.
 | |
| 
 | |
| Without `--all` and without any '<ref>', the heads that exist
 | |
| both on the local side and on the remote side are updated.
 | |
| 
 | |
| When one or more '<ref>' are specified explicitly (whether on the
 | |
| command line or via `--stdin`), 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 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. The rules used to match a ref are the same
 | |
| rules used by 'git rev-parse' to resolve a symbolic ref
 | |
| name. See linkgit:git-rev-parse[1].
 | |
| 
 | |
|  - 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.
 | |
| 
 | |
|  - If <dst> does not match any remote ref, either
 | |
| 
 | |
|    * it has to start with "refs/"; <dst> is used as the
 | |
|      destination literally in this case.
 | |
| 
 | |
|    * <src> == <dst> and the ref that matched the <src> must not
 | |
|      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.
 | |
| 
 | |
| GIT
 | |
| ---
 | |
| Part of the linkgit:git[1] suite
 |