███████╗██╗ ██╗██╗██████╗ ██╗████████╗
██╔════╝██║ ██║██║██╔══██╗██║╚══██╔══╝
███████╗███████║██║██████╔╝██║ ██║
╚════██║██╔══██║██║██╔═══╝ ██║ ██║
███████║██║ ██║██║██║ ██║ ██║
╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝ ╚═╝
Shipit is a Rust command line interface for managing merge requests, changelogs, tags, and releases. | gitshipit.net
Installation
Install Script (macOS/Linux/Windows)
|
Cargo
Homebrew (macOS)
&&
From Source
Or grab a pre-built binary from the releases page.
Quick start
# 1. Generate a config file at the platform default location
# 2. Check the config out and edit settings with your editor
# 3. Ship it from the root of your project. See the command docs below for more options
Optional Requirements
- A GitHub or GitLab account and api token (GitHub / GitLab) with merge request permissions is required for merge request creation with the
--dry-runoption disabled - Ollama running locally with the model that matches your config is required for usage with the
--agent ollamaoption
Commands
b2b — Branch to Branch
shipit b2b <source> <target> [--agent <agent>] [--dryrun] [--dir <path>] [--id <identifier>] [--remote <name>] [--prompt <text>] [--description <text>]
| Argument / Flag | Description |
|---|---|
source |
Branch with new commits (e.g. develop) |
target |
Destination branch (e.g. main) |
--agent <agent> |
Agent to use for generating the merge/pull request description (ollama, shipit) |
--dryrun |
Preview the merge request description without creating it |
--dir <path> |
Path to the git repository (defaults to current directory) |
--id <identifier> |
Project identifier — owner/repo for GitHub, numeric id for GitLab (auto-detected from remote url if omitted) |
--remote <name> |
Git remote to detect platform from (defaults to origin) |
--prompt <text> |
Prompt prefix sent to Ollama when --agent ollama is set (overrides the ollama.prompt config value) |
--description <text> |
Use a custom description for the merge/pull request (skips commit discovery and ai summary) |
What happens:
- Finds all commits on
sourcethat aren't ontarget - If
--agentis set, generates categorized release notes (features, fixes, infra, docs) — using Ollama or the built-in shipit conventional commit categorizer - If the local
sourcebranch is ahead of the remote, prompts you to push it before continuing - Opens a pull/merge request on GitHub or GitLab with the description
Examples:
# Auto-detect platform and project from the origin remote URL
# With ollama-generated release notes
# With shipit's built-in conventional commit categorizer
# Preview the description without creating the request
# Explicitly specify the project identifier
# Use a different remote
# Point at a repo outside the current directory
# Pass a custom description directly (skips commit discovery and ai)
config generate
Writes or overwrites a default config file to the platform config directory and prints the path.
Default config location:
- Linux & macOS:
~/.config/shipit/default-config.toml - Windows:
%APPDATA%\shipit\default-config.toml
config show
Prints the current config file path and its contents as TOML.
Platform support
| Platform | Architecture | Status |
|---|---|---|
| Linux | x86_64 | ✓ |
| macOS | x86_64 | ✓ |
| macOS | aarch64 | ✓ |
| Windows | x86_64 | ✓ |
Support
If shipit saves you time, a coffee goes a long way.
