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

# buf-push(1)

Push to a registry

## NAME

buf-push - Push to a registry

## SYNOPSIS

**buf push  \[flags\]**

## DESCRIPTION

The first argument is the source to push, which must be one of format \[dir,git,protofile,tar,zip\]. This defaults to "." if no argument is specified.

## OPTIONS

**--create**\[=false\]\
 	Create the module if it does not exist. Defaults to creating a private module if --create-visibility is not set.

**--create-default-label**=""\
 	The module's default label setting, if created. If this is not set, then the module will be created with the default label "main".

**--create-visibility**="private"\
 	The module's visibility setting, if created. Can only be set with --create. Must be one of \[public,private\]

**--disable-symlinks**\[=false\]\
 	Do not follow symlinks when reading sources or configuration from the local filesystem By default, symlinks are followed in this CLI, but never followed on the Buf Schema Registry

**--error-format**="text"\
 	The format for build errors printed to stderr. Must be one of \[text,json,msvs,junit,github-actions,gitlab-code-quality\]

**--exclude-unnamed**\[=false\]\
 	Only push named modules to the BSR. Named modules must not have any unnamed dependencies.

**--git-metadata**\[=false\]\
 	Uses the Git source control state to set flag values. If this flag is set, we will use the following values for your flags:

```
--source-control-url to <git remote URL>/<repository name>/<route>/<checked out commit sha> (e.g. https://github.com/acme/weather/commit/ffac537e6cbbf934b08745a378932722df287a53).
--label for each Git tag and branch pointing to the currently checked out commit. You can set additional labels using --label with this flag.
--create-default-label to the Git default branch (e.g. main) - this is only in effect if --create is also set.
```

The source control URL and default branch is based on the required Git remote "origin". This flag is only compatible with checkouts of Git source repositories. If you set the --source-control-url flag and/or --create-default-label flag yourself, then the value(s) will be used instead and the information will not be derived from the Git source control state.

**-h**, **--help**\[=false\]\
 	help for push

**--label**=\[\]\
 	Associate the label with the modules pushed. Can be used multiple times.

**--source-control-url**=""\
 	The URL for viewing the source code of the pushed modules (e.g. the specific commit in source control).

## OPTIONS INHERITED FROM PARENT COMMANDS

**--debug**\[=false\]\
 	Turn on debug logging (env BUF\_DEBUG)

**--log-format**="color"\
 	The log format text,color,json ⟨env BUF\_LOG\_FORMAT⟩

**--timeout**=0s\
 	The duration until timing out, setting it to 0 means no timeout (env BUF\_TIMEOUT)

## SEE ALSO

**[buf(1)](/buf/1.md)**

## HISTORY

2026-10-22 Auto generated by spf13/cobra
