diff --git a/fast b/fast new file mode 100644 index 0000000..9b6d67e --- /dev/null +++ b/fast @@ -0,0 +1,969 @@ +GIT-PUSH(1) Git Manual GIT-PUSH(1) + +NAME + git-push - Update remote refs along with associated objects + +SYNOPSIS + git push [--all | --branches | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=] + [--repo=] [-f | --force] [-d | --delete] [--prune] [-q | --quiet] [-v | --verbose] + [-u | --set-upstream] [-o | --push-option=] + [--[no-]signed|--signed=(true|false|if-asked)] + [--force-with-lease[=[:]] [--force-if-includes]] + [--no-verify] [ [...]] + +DESCRIPTION + Updates remote refs using local refs, while sending objects necessary to + complete the given refs. + + You can make interesting things happen to a repository every time you + push into it, by setting up hooks there. See documentation for git- + receive-pack(1). + + When the command line does not specify where to push with the +  argument, branch.*.remote configuration for the current + branch is consulted to determine where to push. If the configuration is + missing, it defaults to origin. + + When the command line does not specify what to push with ... + arguments or --all, --mirror, --tags options, the command finds the + default  by consulting remote.*.push configuration, and if it + is not found, honors push.default configuration to decide what to push + (See git-config(1) for the meaning of push.default). + + When neither the command-line nor the configuration specifies what to + push, the default behavior is used, which corresponds to the simple + value for push.default: the current branch is pushed to the + corresponding upstream branch, but as a safety measure, the push is + aborted if the upstream branch does not have the same name as the local + one. + +OPTIONS + + The "remote" repository that is the destination of a push operation. + This parameter can be either a URL (see the section GIT URLS below) + or the name of a remote (see the section REMOTES below). + + ... + Specify what destination ref to update with what source object. The + format of a parameter is an optional plus +, followed by + the source object , followed by a colon :, followed by the + destination ref . + + The is often the name of the branch you would want to push, + but it can be any arbitrary "SHA-1 expression", such as master~4 or + HEAD (see gitrevisions(7)). + + The tells which ref on the remote side is updated with this + push. Arbitrary expressions cannot be used here, an actual ref must + be named. If git push [] without any  argument + is set to update some ref at the destination with  with + remote..push configuration variable, : part can be + omitted—such a push will update a ref that  normally updates + without any  on the command line. Otherwise, missing : + means to update the same ref as the . + + If doesn’t start with refs/ (e.g. refs/heads/master) we will + try to infer where in refs/* on the destination it + belongs based on the type of being pushed and whether is + ambiguous. + + • If unambiguously refers to a ref on the + remote, then push to that ref. + + • If resolves to a ref starting with refs/heads/ or + refs/tags/, then prepend that to . + + • Other ambiguity resolutions might be added in the future, but + for now any other cases will error out with an error indicating + what we tried, and depending on the + advice.pushUnqualifiedRefname configuration (see git-config(1)) + suggest what refs/ namespace you may have wanted to push to. + + The object referenced by is used to update the reference + on the remote side. Whether this is allowed depends on where in + refs/* the reference lives as described in detail below, in + those sections "update" means any modifications except deletes, + which as noted after the next few sections are treated differently. + + The refs/heads/* namespace will only accept commit objects, and + updates only if they can be fast-forwarded. + + The refs/tags/* namespace will accept any kind of object (as + commits, trees and blobs can be tagged), and any updates to them + will be rejected. + + It’s possible to push any type of object to any namespace outside of + refs/{tags,heads}/*. In the case of tags and commits, these will be + treated as if they were the commits inside refs/heads/* for the + purposes of whether the update is allowed. + + I.e. a fast-forward of commits and tags outside refs/{tags,heads}/* + is allowed, even in cases where what’s being fast-forwarded is not a + commit, but a tag object which happens to point to a new commit + which is a fast-forward of the commit the last tag (or commit) it’s + replacing. Replacing a tag with an entirely different tag is also + allowed, if it points to the same commit, as well as pushing a + peeled tag, i.e. pushing the commit that existing tag object points + to, or a new tag object which an existing commit points to. + + Tree and blob objects outside of refs/{tags,heads}/* will be treated + the same way as if they were inside refs/tags/*, any update of them + will be rejected. + + All of the rules described above about what’s not allowed as an + update can be overridden by adding an the optional leading + to a + refspec (or using --force command line option). The only exception + to this is that no amount of forcing will make the refs/heads/* + namespace accept a non-commit object. Hooks and configuration can + also override or amend these rules, see e.g. + receive.denyNonFastForwards in git-config(1) and pre-receive and + update in githooks(5). + + Pushing an empty allows you to delete the ref from the + remote repository. Deletions are always accepted without a leading + + in the refspec (or --force), except when forbidden by configuration + or hooks. See receive.denyDeletes in git-config(1) and pre-receive + and update in githooks(5). + + The special refspec : (or +: to allow non-fast-forward updates) + directs Git to push "matching" branches: for every branch that + exists on the local side, the remote side is updated if a branch of + the same name already exists on the remote side. + + tag  means the same as refs/tags/:refs/tags/. + + --all, --branches + Push all branches (i.e. refs under refs/heads/); cannot be used with + other . + + --prune + Remove remote branches that don’t have a local counterpart. For + example a remote branch tmp will be removed if a local branch with + the same name doesn’t exist any more. This also respects refspecs, + e.g. git push --prune remote refs/heads/*:refs/tmp/* would make + sure that remote refs/tmp/foo will be removed if refs/heads/foo + doesn’t exist. + + --mirror + Instead of naming each ref to push, specifies that all refs under + refs/ (which includes but is not limited to refs/heads/, + refs/remotes/, and refs/tags/) be mirrored to the remote repository. + Newly created local refs will be pushed to the remote end, locally + updated refs will be force updated on the remote end, and deleted + refs will be removed from the remote end. This is the default if the + configuration option remote..mirror is set. + + -n, --dry-run + Do everything except actually send the updates. + + --porcelain + Produce machine-readable output. The output status line for each ref + will be tab-separated and sent to stdout instead of stderr. The full + symbolic names of the refs will be given. + + -d, --delete + All listed refs are deleted from the remote repository. This is the + same as prefixing all refs with a colon. + + --tags + All refs under refs/tags are pushed, in addition to refspecs + explicitly listed on the command line. + + --follow-tags + Push all the refs that would be pushed without this option, and also + push annotated tags in refs/tags that are missing from the remote + but are pointing at commit-ish that are reachable from the refs + being pushed. This can also be specified with configuration variable + push.followTags. For more information, see push.followTags in git- + config(1). + + --[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 + git-receive-pack(1) for the details on the receiving end. + + --[no-]atomic + Use an atomic transaction on the remote side if available. Either + all refs are updated, or on error, no refs are updated. If the + server does not support atomic pushes the push will fail. + + -o