GIT-QPUSH(1)

NAME
git-qpush - push patches on to the Git-MQ patch stack

SYNOPSIS
git qpush [[-f [--no-backup]] | --keep-changes] [<patch>]
git qpush [[-f [--no-backup]] | --keep-changes] [<index>]
git qpush [[-f [--no-backup]] | --keep-changes] [-a | --all]
git qpush [[-f [--no-backup]] | --keep-changes] --move <patch>
git qpush [[-f [--no-backup]] | --keep-changes] --move <index>

DESCRIPTION
The git qpush command will push patches on to the Git-MQ applied patch stack, until the patch specified by the <patch> argument (an unapplied and unguarded patch name), or by the <index> argument (an unapplied and unguarded patch sequence number, as reported by the git qseries --verbose command), becomes the topmost applied patch.

If the -a (or --all) option is selected, then no <patch> or <index> argument should be specified; this will push all currently-unapplied and unguarded patches, which follow the topmost currently-applied patch in series order, on to the patch stack.

If no <patch> or <index> argument is specified, and the --all option is not selected, then only one patch will be pushed; this will be the first unapplied and unguarded patch which follows the topmost currently-applied patch, in series order, (i.e. the patch, if any, which would be identified by the git qnext command).

The --move option may be used to relocate any unapplied and unguarded patch, which follows the patch identified by git qnext as the first pushable patch, such that the relocated patch is pushed ahead of the git qnext identified patch, which then remains as the first pushable patch.

If there are no patches which are both unapplied and unguarded, following the topmost currently-applied patch in series order, the git qpush operation will fail.

OPTIONS

-a, --all
    Push all available unapplied and unguarded patches, which follow the topmost currently-applied patch in series order.

-f, --force
    If any files, known to and tracked by git, have been locally modified in the working tree, or in git's index, and the --no-backup option has not been specified, first make backup backup copies of all locally modified files; discard all local modifications, then push patches as appropriate.

    If the --force option is not specified, git qpush will abort in the presence of local modifications.

--no-backup
    Used only in conjunction with --force, (and silently ignored otherwise), discard all local modifications, without making backup copies.

--keep-changes
    Attempt to preserve local modifications, while pushing patches; if any local modification conflicts with patch content, abort the entire git qpush operation.

    (The --keep-changes option is currently unimplemented).

--move <patch>, --move <index>
    Push only the single patch identified by the <patch>, or the <index> option, (one of which must be specified), relocating it in the patch series if necessary, such that it is pushed ahead of the patch which would have been identified by the git qnext command.

    The --move option can only be used to move a patch which follows the topmost currently-applied patch in series order; it cannot be used to push a previously skipped patch, which precedes the current topmost patch in series order.

If there are local modifications to tracked files, either in the working tree, or staged in git's index, and if neither the --force option, nor the --keep-changes option is specified, then the git qpush operation will be aborted.

EXIT STATUS
On successful completion, git qpush reports an exit status code of 0. Any non-zero exit status code indicates that an error occurred.

COMPARISON WITH MERCURIAL QUEUES
Inspired by, and for the most part based on behavioural observation of Mercurial's MQ extension, the git qpush command exhibits fundamentally the same behaviour as its hg qpush counterpart.

AUTHOR
Copyright (C) 2019, by Keith Marshall

This man page was written by Keith Marshall <keith@users.osdn.me>, to accompany the Git-MQ program suite. It is published under the terms of the GNU Free Documentation Licence, version 1.3, (or any later version published by the Free Software Foundation), with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.

The Git-MQ program suite itself is distibruted under the terms of the GNU General Public Licence, version 3, (or any later version published by the Free Software Foundation).

Copies of the GNU Free Documentation Licence, and of the GNU General Public Licence, are included within the Git-MQ source distribution, in the files FDL-1.3, and LICENCE, respectively.

SEE ALSO
git-qgoto(1), git-qnext(1), git-qseries(1)