gbp-push(1)

🌸 gbp-push(1) β€” the git-buildpackage manual, bestie edition 🌸

okay so you're in the git-buildpackage manual, specifically the page for gbp-push. welcome, sit down, hydrate. πŸ’–


✨ NAME ✨

gbp-push β€” push your stuff up to a remote Git repo, but like… smart. It actually knows about your packaging branch tracking, so you don't have to sit there guessing which branches and tags need to go up. it's giving competence, honestly. πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

gbp push [--version] [--help] [--verbose] [--color=[auto|on|off]]
         [--color-scheme= COLOR_SCHEME] [--ignore-branch]
         [--debian-branch= branch_name] [--upstream-branch= branch_name]
         [--debian-tag= tag-format] [--upstream-tag= tag-format]
         [--[no-]pristine-tar] [--dry-run] [repository]

πŸ¦‹ DESCRIPTION πŸ¦‹

So gbp push pushes your local changes to a remote repository. The moment for this is right after you've uploaded a Debian package to the archive β€” that's when you wanna update your debian-branch, your upstream-branch, your pristine-tar branch, and alllll the corresponding tags. one little command, whole repo caught up. iconic behaviour tbh. ✨

Here's the order it does stuff in, no cap:

  • First it verifies that you're actually running it from the debian-branch. vibe check on your working directory, basically. 🫢
  • Then it figures out the debian tag from debian/changelog, and adds it to the list of things to push β€” if the changelog isn't showing an unreleased package.
  • Then it figures out the upstream tag from debian/changelog and adds it to the push list, as long as it's not a native package.
  • Then it checks whether those tags line up with the branch tips of the corresponding upstream and debian branches. If they do? Those branches get added to the list of things to push. If they don't? Then the changes only get pushed up to the commit that the corresponding tag points at. yes, the commit. exactly. πŸ”₯
  • Then it checks if the pristine-tar branch needs pushing, and if it does, adds it to the list too.
  • And finally β€” only if you're not in dry-run mode β€” it pushes all of the above to the remote side.

If you hand it a remote on the command line, everything goes to that remote repository. If you don't, it pushes to the current branch's remote and falls back to origin. πŸ’œ


πŸ‘‘ OPTIONS πŸ‘‘

  • --version β€” Prints the version of the program, i.e. the version of the whole git-buildpackage suite. cute little receipt of what you're running. 🧾
  • -v, --verbose β€” Verbose execution. it will tell you everything, and honestly?? we love a chatty program. πŸ—£οΈ
  • -h, --help β€” Print help and exit. your emergency exit, bestie. πŸšͺ
  • --color=[auto|on|off] β€” Whether to use colored output. yes this is a personality setting. 🌈
  • --color-scheme=COLOR_SCHEME β€” The colors to use in output (when color is enabled, obviously). The format for COLOR_SCHEME is '<debug>:<info>:<warning>:<error>'. Numerical values and color names are both accepted, and empty fields just mean "use the default color". For example, --git-color-scheme='cyan:34::' would show debug messages in cyan, info messages in blue, and other messages in the default color (i.e. warning and error messages in red). a whole aesthetic overhaul, fr fr. 🎨
  • --ignore-branch β€” Don't fail if the debian-branch doesn't match the branch you've currently got checked out β€” just push the current branch instead. no drama, just vibes. πŸ™ˆ
  • --debian-branch=branch_name β€” The branch in the Git repository where the Debian package is being developed. If you set this to the empty value, the branch won't be pushed at all. okay so empty means ✨nothing✨, not "guess". noted. πŸ“
  • --debian-tag=TAG-FORMAT β€” Use this tag format when looking for tags that correspond to a Debian version. Default is debian/%(version)s. If you set it to the empty value, the tag won't be pushed β€” but gbp will still push the tip of the debian-branch. different behaviour, don't get it twisted. πŸ‘€
  • --upstream-branch=branch_name β€” The branch in the Git repository where the upstream sources are put. If you set it to the empty value, the branch won't be pushed. πŸ’€
  • --upstream-tag=TAG-FORMAT β€” Use this tag format when looking for tags of upstream versions. Default is upstream/%(version)s. If you set it to the empty value, the tag won't be pushed. that's it, that's the rule. 🏷️
  • --pristine-tar β€” Whether to update the pristine-tar branch too. go on, update it, it's been sitting there. 🧚
  • --dry-run β€” Passes --dry-run to git push. So it doesn't push anything β€” it only checks whether things are pushable. a little dress rehearsal, a little mock trial, no consequences. 🎭

⭐ CONFIGURATION FILES ⭐

Several gbp.conf files get parsed to set defaults for all the command-line arguments up above. wanna know the deets? go read the gbp.conf(5) manpage. it's all in there, bestie. πŸ“š


🌈 SEE ALSO 🌈

gbp-buildpackage(1), gbp-clone(1), gbp-pull(1), gbp.conf(5)

like… the whole friend group. go say hi. 🫢


πŸ’œ AUTHOR πŸ’œ

Guido GΓΌnther <agx@sigxcpu.org> β€” the legend, the moment, the author. πŸ‘‘


no cap, you now know everything this page knows. go push something. responsibly. πŸ’…

this page came from the git-buildpackage Manual, dated 26 May 2026 β€” that's the version and the date, and that's the sign-off. mwah. πŸŽ€

πŸ“¦ where this page comes from