jj-git-push(1) General Commands Manual jj-git-push(1) NAME jj-git-push - Push to a Git remote SYNOPSIS jj git push [-R|--repository] [--remote] [-b|--bookmark] [--ignore-working-copy] [--no-integrate-operation] [-t|--tag] [--all] [--ignore-immutable] [--at-operation] [--tracked] [--debug] [--deleted] [--allow-empty-description] [--color] [--allow-private] [--quiet] [--allow-conflicts] [--no-pager] [--config] [-r|--revision] [-c|--change] [--config-file] [--named] [--dry-run] [-o|--option] [-h|--help] DESCRIPTION Push to a Git remote By default, pushes tracking bookmarks and tags pointing to `remote_bookmarks(remote=)..@`. Use `--bookmark`/`--tag` to push specific bookmarks or tags. Use `--all` to push all bookmarks and tags. Use `--change` to generate bookmark names based on the change IDs of specific commits. When pushing a bookmark or tag, the command pushes all commits in the range from the remote's current position up to and including its target commit. Any descendant commits beyond the reference are not pushed. If the local reference has changed from the last fetch, push will update the remote reference to the new position after passing safety checks. This is similar to `git push --force-with-lease` - the remote is updated only if its current state matches what Jujutsu last fetched. Unlike in Git, the remote to push to is not derived from the tracked remote bookmarks. Use `--remote` to select the remote Git repository by name. There is no option to push to multiple remotes. Before the command actually moves, creates, or deletes a remote bookmark, it makes several [safety checks]. If there is a problem, you may need to run `jj git fetch --remote ` and/or resolve some [bookmark conflicts]. [safety checks]: https://docs.jj-vcs.dev/latest/bookmarks/#pushing-bookmarks-safety-checks [bookmark conflicts]: https://docs.jj-vcs.dev/latest/bookmarks/#conflicts OPTIONS --remote The remote to push to (only named remotes are supported) This defaults to the `git.push` setting. If that is not configured, and if there are multiple remotes, the remote named "origin" will be used. -b, --bookmark Push only this bookmark, or bookmarks matching a pattern (can be repeated) If a bookmark isn't tracking anything yet, the remote bookmark will be tracked automatically. By default, the specified pattern matches bookmark names with glob syntax. You can also use other [string pattern syntax]. [string pattern syntax]: https://docs.jj-vcs.dev/latest/revsets/#string-patterns -t, --tag Push only this tag, or tags matching a pattern (can be repeated) If a tag isn't tracking anything yet, the remote tag will be tracked automatically. By default, the specified pattern matches tag names with glob syntax. You can also use other [string pattern syntax]. [string pattern syntax]: https://docs.jj-vcs.dev/latest/revsets/#string-patterns --all Push all bookmarks and tags (including new ones) --tracked Push all tracked bookmarks and tags This usually means that the bookmark or tag was already pushed to or fetched from the [relevant remote]. [relevant remote]: https://docs.jj-vcs.dev/latest/bookmarks#remotes-and-tracked-bookmarks --deleted Push all deleted bookmarks and tags Only tracked bookmarks and tags can be successfully deleted on the remote. A warning will be printed if any untracked bookmarks or tags on the remote correspond to missing local bookmarks or tags. --allow-empty-description Allow pushing commits with empty descriptions --allow-private Allow pushing commits that are private The set of private commits can be configured by the `git.private-commits` setting. The default is `none()`, meaning all commits are eligible to be pushed. --allow-conflicts Allow pushing commits that contain conflicts -r, --revision Push bookmarks and tags pointing to these commits (can be repeated) -c, --change Push this commit by creating a bookmark (can be repeated) The created bookmark will be tracked automatically. Use the `templates.git_push_bookmark` setting to customize the generated bookmark name. The default is `"push-" ++ change_id.short()`. --named Specify a new bookmark name and a revision to push under that name, e.g. '--named myfeature=@' Automatically tracks the bookmark if it is new. --dry-run Only display what will change on the remote -o, --option