pijul push

Push a patch to a remote repository


pijul push [-h | --help] [-V | --version] [--repository <repository>] [--from-branch <from_branch>] [(-p | --port) <port>] [--to-branch <to_branch>] [--set-remote <set-remote>] [--set-default] [-a | --all] [--force] [remote]


Push patches from a branch of a local repository to a branch of a remote repository. Patch selection is either interactive, or includes all patches in the current branch if -a (or --all) is present.

If the <to_branch> does not exist in the remote repository, it will be created. If the <from_branch> does not exist in the local repository, this command does nothing.

This command can also save remote repositories, in two different ways:

  • If --set-default is specified, the remote destination becomes the default destination, and it is not necessary to give it a name. Subsequent pushes to the same address can be done by simply running pijul push.

    It is not necessary to give a name (using --set-remote) to the default destination, although it is possible.

  • If --set-remote is specified, the remote destination is saved as <set-remote>, and can be reused in subsequent commands. For example, after calling pijul push me@nest.pijul.com:example --set-remote nest, pushing to the same address (me@nest.pijul.com:example) again can be done by running pijul push nest.

Saved remote repositories are written to ".pijul/meta.toml" (at the root of the repository).

Finally, push refuses to apply patches to the remote side if the remote side has patches not in the local branch. This behaviour can be overriden with --force.


pijul push me@nest.pijul.com:example --set-remote nest
pijul push nest


  • -h, --help

    Print a help message and exit.

  • -V, --version

    Print the version of Pijul and exit.

  • --repository <repository>

    Don't run this command in the current directory, run it in <repository> instead.

  • --from-branch <from-branch>

    Push patches from branch <from-branch> in the local repository, instead of the current branch (the default).

  • -p <port>, --port <port>

    If the remote repository is accessed over SSH, the port of the remote SSH server, defaulting to 22 (the standard SSH port).

  • --to-branch <to-branch>

    Push patches to branch <to-branch> in the remote repository, instead of the default branch ("master").

  • --set-remote <set-remote>

    Save this remote repository as <set-remote>. In subsequent commands, name <set-remote> can be used instead of this URI.

  • --set-default

    Make this remote repository the default. If subsequent commands involving remote repositories are called without a URI, the default remote repository will be used as the URI.

  • -a, --all

    Don't select patches to push interactively, push all patches instead.

  • --force

    Force a non-fast-forward push.

  • [remote]

    Name or URI of the remote repository. A name can be for instance "nest", while a URI can be a HTTP or HTTPS URL, or an SSH address (such as "me@nest.pijul.com:repository"), or a local path.