.ie \n(.g .ds Aq \(aq .el .ds Aq ' .TH jj-gerrit-upload 1 "upload " .SH NAME jj\-gerrit\-upload \- Upload changes to Gerrit for code review, or update existing changes .SH SYNOPSIS \fBjj gerrit upload\fR [\fB\-r\fR|\fB\-\-revision\fR] [\fB\-R\fR|\fB\-\-repository\fR] [\fB\-b\fR|\fB\-\-remote\-branch\fR] [\fB\-\-ignore\-working\-copy\fR] [\fB\-\-no\-integrate\-operation\fR] [\fB\-\-remote\fR] [\fB\-\-ignore\-immutable\fR] [\fB\-n\fR|\fB\-\-dry\-run\fR] [\fB\-\-at\-operation\fR] [\fB\-\-reviewer\fR] [\fB\-\-cc\fR] [\fB\-\-debug\fR] [\fB\-\-color\fR] [\fB\-l\fR|\fB\-\-label\fR] [\fB\-\-quiet\fR] [\fB\-\-topic\fR] [\fB\-\-hashtag\fR] [\fB\-\-no\-pager\fR] [\fB\-\-config\fR] [\fB\-m\fR|\fB\-\-message\fR] [\fB\-\-config\-file\fR] [\fB\-\-edit\fR] [\fB\-\-wip\fR] [\fB\-\-ready\fR] [\fB\-\-private\fR] [\fB\-\-remove\-private\fR] [\fB\-\-publish\-comments\fR] [\fB\-\-no\-publish\-comments\fR] [\fB\-\-notify\fR] [\fB\-\-submit\fR] [\fB\-\-skip\-validation\fR] [\fB\-\-merged\fR] [\fB\-\-ignore\-attention\-set\fR] [\fB\-\-deadline\fR] [\fB\-\-custom\fR] [\fB\-o\fR|\fB\-\-option\fR] [\fB\-\-trace\fR] [\fB\-h\fR|\fB\-\-help\fR] .SH DESCRIPTION Upload changes to Gerrit for code review, or update existing changes .PP Uploading a set of revisions to Gerrit creates a single "change" for each revision included in the revset and all their mutable ancestors. These changes will then be available for review on your Gerrit instance. .PP If a change already exists for a given revision (i.e. it contains the same `Change\-Id`), this command will update the contents of the existing change to match. .PP Note: Any commit in the given revset that does not have a `Change\-Id` trailer will have one generated based on the Jujutsu change ID. This trailer is only added to the uploaded commit, which means the resulting commit ID uploaded to Gerrit may not match your local commit ID. As a result, you may encounter divergence when you fetch a merged change into your local repo. To address this, you can abandon your local change or rebase it on top of trunk with `jj rebase \-\-skip\-emptied ...`, which will resolve the divergence. Alternatively, you can add the following to your Jujutsu config to add `Change\-Id` trailers to your local commits automatically before `jj gerrit upload` does: ```toml [templates] commit_trailers = \*(Aq\*(Aq\*(Aq if( !trailers.contains_key("Change\-Id"), format_gerrit_change_id_trailer(self) ) \*(Aq\*(Aq\*(Aq ``` .PP Also see the [Jujutsu docs on Gerrit]. .PP [Jujutsu docs on Gerrit]: https://docs.jj\-vcs.dev/latest/gerrit .SH OPTIONS .TP \fB\-r\fR, \fB\-\-revision\fR \fI\fR The revisions to upload to Gerrit All mutable ancestors of specified revisions will also be pushed. This means that `jj gerrit upload \-r foo` is equivalent to `jj gerrit upload \-r \*(Aqmutable()::foo\*(Aq`. If this is not provided, `@` will be uploaded if it has a description, and `@\-` will be uploaded otherwise. .TP \fB\-b\fR, \fB\-\-remote\-branch\fR \fI\fR The location where your changes are intended to land This should be a branch on the remote. The default is the `gerrit.default\-remote\-branch` setting. .TP \fB\-\-remote\fR \fI\fR The Gerrit remote to push to This can point to any configured Git remote, or can be a full SSH URL. The default is the `gerrit.default\-remote` setting. .TP \fB\-n\fR, \fB\-\-dry\-run\fR Only display what will change on the remote; do not push changes to Gerrit .TP \fB\-\-reviewer\fR \fI\fR Add these emails as a reviewer (can be repeated) .TP \fB\-\-cc\fR \fI\fR CC these emails on the change (can be repeated) .TP \fB\-l\fR, \fB\-\-label\fR \fI