| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 1 | git-send-pack(1) |
| 2 | ================ |
| 3 | |
| 4 | NAME |
| 5 | ---- |
| Junio C Hamano | ee1e428 | 2007-02-04 08:32:04 | [diff] [blame^] | 6 | git-send-pack - Push objects over git protocol to another repository |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 7 | |
| 8 | |
| 9 | SYNOPSIS |
| 10 | -------- |
| Junio C Hamano | 4ad294b | 2007-01-20 02:22:50 | [diff] [blame] | 11 | 'git-send-pack' [--all] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...] |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 12 | |
| 13 | DESCRIPTION |
| 14 | ----------- |
| Junio C Hamano | e58607f | 2007-01-17 23:27:45 | [diff] [blame] | 15 | Usually you would want to use gitlink:git-push[1] which is a |
| 16 | higher level wrapper of this command instead. |
| 17 | |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 18 | Invokes 'git-receive-pack' on a possibly remote repository, and |
| 19 | updates it from the current repository, sending named refs. |
| 20 | |
| 21 | |
| 22 | OPTIONS |
| 23 | ------- |
| Junio C Hamano | 4ad294b | 2007-01-20 02:22:50 | [diff] [blame] | 24 | \--receive-pack=<git-receive-pack>:: |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 25 | Path to the 'git-receive-pack' program on the remote |
| 26 | end. Sometimes useful when pushing to a remote |
| 27 | repository over ssh, and you do not have the program in |
| 28 | a directory on the default $PATH. |
| 29 | |
| Junio C Hamano | 4ad294b | 2007-01-20 02:22:50 | [diff] [blame] | 30 | \--exec=<git-receive-pack>:: |
| 31 | Same as \--receive-pack=<git-receive-pack>. |
| 32 | |
| 33 | \--all:: |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 34 | Instead of explicitly specifying which refs to update, |
| 35 | update all refs that locally exist. |
| 36 | |
| Junio C Hamano | 4ad294b | 2007-01-20 02:22:50 | [diff] [blame] | 37 | \--force:: |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 38 | Usually, the command refuses to update a remote ref that |
| 39 | is not an ancestor of the local ref used to overwrite it. |
| 40 | This flag disables the check. What this means is that |
| 41 | the remote repository can lose commits; use it with |
| 42 | care. |
| 43 | |
| Junio C Hamano | 4ad294b | 2007-01-20 02:22:50 | [diff] [blame] | 44 | \--verbose:: |
| 45 | Run verbosely. |
| 46 | |
| 47 | \--thin:: |
| 48 | Spend extra cycles to minimize the number of objects to be sent. |
| 49 | Use it on slower connection. |
| 50 | |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 51 | <host>:: |
| 52 | A remote host to house the repository. When this |
| 53 | part is specified, 'git-receive-pack' is invoked via |
| 54 | ssh. |
| 55 | |
| 56 | <directory>:: |
| 57 | The repository to update. |
| 58 | |
| Junio C Hamano | 21c0b42 | 2006-10-12 19:10:36 | [diff] [blame] | 59 | <ref>...:: |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 60 | The remote refs to update. |
| 61 | |
| 62 | |
| 63 | Specifying the Refs |
| 64 | ------------------- |
| 65 | |
| 66 | There are three ways to specify which refs to update on the |
| 67 | remote end. |
| 68 | |
| Junio C Hamano | 341071d | 2006-06-04 07:24:48 | [diff] [blame] | 69 | With '--all' flag, all refs that exist locally are transferred to |
| Junio C Hamano | 1a4e841 | 2005-12-27 08:17:23 | [diff] [blame] | 70 | the remote side. You cannot specify any '<ref>' if you use |
| 71 | this flag. |
| 72 | |
| 73 | Without '--all' and without any '<ref>', the refs that exist |
| 74 | both on the local side and on the remote side are updated. |
| 75 | |
| 76 | When one or more '<ref>' are specified explicitly, it can be either a |
| 77 | single pattern, or a pair of such pattern separated by a colon |
| 78 | ":" (this means that a ref name cannot have a colon in it). A |
| 79 | single pattern '<name>' is just a shorthand for '<name>:<name>'. |
| 80 | |
| 81 | Each pattern pair consists of the source side (before the colon) |
| 82 | and the destination side (after the colon). The ref to be |
| 83 | pushed is determined by finding a match that matches the source |
| 84 | side, and where it is pushed is determined by using the |
| 85 | destination side. |
| 86 | |
| 87 | - It is an error if <src> does not match exactly one of the |
| 88 | local refs. |
| 89 | |
| 90 | - It is an error if <dst> matches more than one remote refs. |
| 91 | |
| 92 | - If <dst> does not match any remote ref, either |
| 93 | |
| 94 | * it has to start with "refs/"; <dst> is used as the |
| 95 | destination literally in this case. |
| 96 | |
| 97 | * <src> == <dst> and the ref that matched the <src> must not |
| 98 | exist in the set of remote refs; the ref matched <src> |
| 99 | locally is used as the name of the destination. |
| 100 | |
| 101 | Without '--force', the <src> ref is stored at the remote only if |
| 102 | <dst> does not exist, or <dst> is a proper subset (i.e. an |
| 103 | ancestor) of <src>. This check, known as "fast forward check", |
| 104 | is performed in order to avoid accidentally overwriting the |
| 105 | remote ref and lose other peoples' commits from there. |
| 106 | |
| 107 | With '--force', the fast forward check is disabled for all refs. |
| 108 | |
| 109 | Optionally, a <ref> parameter can be prefixed with a plus '+' sign |
| 110 | to disable the fast-forward check only on that ref. |
| 111 | |
| 112 | |
| 113 | Author |
| 114 | ------ |
| 115 | Written by Linus Torvalds <torvalds@osdl.org> |
| 116 | |
| 117 | Documentation |
| 118 | -------------- |
| 119 | Documentation by Junio C Hamano. |
| 120 | |
| 121 | GIT |
| 122 | --- |
| 123 | Part of the gitlink:git[7] suite |