---
name: "hub-release"
section: "1"
platform: "linux"
package: "hub"
version: "2.14.2-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/hub-release"
---

# hub-release(1)

Manage GitHub Releases for the current repository.

## NAME

hub-release - Manage GitHub Releases for the current repository.

## SYNOPSIS

`hub release` \[--include-drafts\] \[--exclude-prereleases\] \[-L *LIMIT*\] \[-f *FORMAT*\]\
 `hub release` show \[-f *FORMAT*\] *TAG*\
 `hub release` create \[-dpoc\] \[-a *FILE*\] \[-m *MESSAGE*\|-F *FILE*\] \[-t *TARGET*\] *TAG*\
 `hub release` edit \[*options*\] *TAG*\
 `hub release` download *TAG* \[-i *PATTERN*\]\
 `hub release` delete *TAG*

## COMMANDS

With no arguments, shows a list of existing releases.

*show*

Show GitHub release notes for *TAG*.

With `--show-downloads`, include the "Downloads" section.

*create*

Create a GitHub release for the specified *TAG* name. If git tag *TAG* does not exist, it will be created at *TARGET* (default: current branch).

*edit*

Edit the GitHub release for the specified *TAG* name. Accepts the same options as *create* command. Publish a draft with `--draft=false`.

Without `--message` or `--file`, a text editor will open pre-populated with the current release title and body. To re-use existing title and body unchanged, pass `-m ""`.

*download*

Download the assets attached to release for the specified *TAG*.

*delete*

Delete the release and associated assets for the specified *TAG*. Note that this does **not** remove the git tag *TAG*.

## OPTIONS

- \-d, --include-drafts

  List drafts together with published releases.

- \-p, --exclude-prereleases

  Exclude prereleases from the list.

- \-L, --limit

  Display only the first *LIMIT* releases.

- \-d, --draft

  Create a draft release.

- \-p, --prerelease

  Create a pre-release.

- \-a, --attach *FILE*

  Attach a file as an asset for this release.

  If *FILE* is in the "*filename*#*text*" format, the text after the "#" character is taken as asset label.

- \-m, --message *MESSAGE*

  The text up to the first blank line in *MESSAGE* is treated as the release title, and the rest is used as release description in Markdown format.

  When multiple `--message` are passed, their values are concatenated with a blank line in-between.

  When neither `--message` nor `--file` were supplied to `release create`, a text editor will open to author the title and description in.

- \-F, --file *FILE*

  Read the release title and description from *FILE*. Pass "-" to read from standard input instead. See `--message` for the formatting rules.

- \-e, --edit

  Open the release title and description in a text editor before submitting. This can be used in combination with `--message` or `--file`.

- \-o, --browse

  Open the new release in a web browser.

- \-c, --copy

  Put the URL of the new release to clipboard instead of printing it.

- \-t, --commitish *TARGET*

  A commit SHA or branch name to attach the release to, only used if *TAG* does not already exist (default: main branch).

- \-i, --include *PATTERN*

  Filter the files in the release to those that match the glob *PATTERN*.

- \-f, --format *FORMAT*

  Pretty print releases using *FORMAT* (default: "%T%n"). See the "PRETTY FORMATS" section of [git-log(1)](/git-log/1.md) for some additional details on how placeholders are used in format. The available placeholders for issues are:

  %U: the URL of this release

  %uT: tarball URL

  %uZ: zipball URL

  %uA: asset upload URL

  %S: state (i.e. "draft", "pre-release")

  %sC: set color to yellow or red, depending on state

  %t: release name

  %T: release tag

  %b: body

  %as: the list of assets attached to this release

  %cD: created date-only (no time of day)

  %cr: created date, relative

  %ct: created date, UNIX timestamp

  %cI: created date, ISO 8601 format

  %pD: published date-only (no time of day)

  %pr: published date, relative

  %pt: published date, UNIX timestamp

  %pI: published date, ISO 8601 format

  %n: newline

  %%: a literal %

- \--color\[=*WHEN*\]

  Enable colored output even if stdout is not a terminal. *WHEN* can be one of "always" (default for `--color`), "never", or "auto" (default).

*TAG*

The git tag name for this release.

## SEE ALSO

[hub(1)](/hub/1.md), [git-tag(1)](/git-tag/1.md)
