X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=Documentation%2Fpull-fetch-param.txt;h=e852f41a322933aa010bdf79247508e42ee3f661;hb=HEAD;hp=2a7131874be370579f2f1ef4a72074b5d8b86141;hpb=bccf5956c323a043e9a5d540b3c842ae6e5e5220;p=git.git diff --git a/Documentation/pull-fetch-param.txt b/Documentation/pull-fetch-param.txt index 2a713187..e852f41a 100644 --- a/Documentation/pull-fetch-param.txt +++ b/Documentation/pull-fetch-param.txt @@ -1,48 +1,6 @@ :: The "remote" repository that is the source of a fetch - or pull operation, or the destination of a push operation. - One of the following notations can be used - to name the remote repository: -+ -=============================================================== -- Rsync URL: rsync://remote.machine/path/to/repo.git/ -- HTTP(s) URL: http://remote.machine/path/to/repo.git/ -- git URL: git://remote.machine/path/to/repo.git/ - or remote.machine:/path/to/repo.git/ -- Local directory: /path/to/repo.git/ -=============================================================== -+ -In addition to the above, as a short-hand, the name of a -file in `$GIT_DIR/remotes` directory can be given; the -named file should be in the following format: -+ - URL: one of the above URL format - Push: ... - Pull: ... -+ -When such a short-hand is specified in place of - without parameters on the command -line, ... specified on `Push:` lines or `Pull:` -lines are used for `git-push` and `git-fetch`/`git-pull`, -respectively. Multiple `Push:` and and `Pull:` lines may -be specified for additional branch mappings. -+ -The name of a file in `$GIT_DIR/branches` directory can be -specified as an older notation short-hand; the named -file should contain a single line, a URL in one of the -above formats, optionally followed by a hash `#` and the -name of remote head (URL fragment notation). -`$GIT_DIR/branches/` file that stores a -without the fragment is equivalent to have this in the -corresponding file in the `$GIT_DIR/remotes/` directory. -+ - URL: - Pull: refs/heads/master: -+ -while having `#` is equivalent to -+ - URL: - Pull: refs/heads/: + or pull operation. See the section <> below. :: The canonical format of a parameter is @@ -50,17 +8,7 @@ while having `#` is equivalent to by the source ref, followed by a colon `:`, followed by the destination ref. + -When used in `git-push`, the side can be an -arbitrary "SHA1 expression" that can be used as an -argument to `git-cat-file -t`. E.g. `master~4` (push -four parents before the current master head). -+ -For `git-push`, the local ref that matches is used -to fast forward the remote ref that matches . If -the optional plus `+` is used, the remote ref is updated -even if it does not result in a fast forward update. -+ -For `git-fetch` and `git-pull`, the remote ref that matches +The remote ref that matches is fetched, and if is not empty string, the local ref that matches it is fast forwarded using . Again, if the optional plus `+` is used, the local ref @@ -82,22 +30,40 @@ must know this is the expected usage pattern for a branch. [NOTE] You never do your own development on branches that appear on the right hand side of a colon on `Pull:` lines; -they are to be updated by `git-fetch`. The corollary is that -a local branch should be introduced and named on a -right-hand-side if you intend to do development derived from -that branch. -This leads to the common `Pull: master:origin` mapping of a -remote `master` branch to a local `origin` branch, which -is then merged to a local development branch, again typically -named `master`. +they are to be updated by `git-fetch`. If you intend to do +development derived from a remote branch `B`, have a `Pull:` +line to track it (i.e. `Pull: B:remote-B`), and have a separate +branch `my-B` to do your development on top of it. The latter +is created by `git branch my-B remote-B` (or its equivalent `git +checkout -b my-B remote-B`). Run `git fetch` to keep track of +the progress of the remote side, and when you see something new +on the remote branch, merge it into your development branch with +`git pull . remote-B`, while you are on `my-B` branch. +The common `Pull: master:origin` mapping of a remote `master` +branch to a local `origin` branch, which is then merged to a +local development branch, again typically named `master`, is made +when you run `git clone` for you to follow this pattern. ++ +[NOTE] +There is a difference between listing multiple +directly on `git-pull` command line and having multiple +`Pull:` lines for a and running +`git-pull` command without any explicit parameters. + listed explicitly on the command line are always +merged into the current branch after fetching. In other words, +if you list more than one remote refs, you would be making +an Octopus. While `git-pull` run without any explicit +parameter takes default s from `Pull:` lines, it +merges only the first found into the current branch, +after fetching all the remote refs. This is because making an +Octopus from remote refs is rarely done, while keeping track +of multiple remote heads in one-go by fetching more than one +is often useful. + Some short-cut notations are also supported. + -* For backward compatibility, `tag` is almost ignored; - it just makes the following parameter to mean a - refspec `refs/tags/:refs/tags/`. +* `tag ` means the same as `refs/tags/:refs/tags/`; + it requests fetching everything up to the given tag. * A parameter without a colon is equivalent to - : when pulling/fetching, and `:` when - pushing. That is, do not store it locally if - fetching, and update the same name if pushing. - + : when pulling/fetching, so it merges into the current + branch without storing the remote branch anywhere locally