git ship [branch name] [-m message]

Notice: Most people don't need to use the ship command. The recommended way to merge your feature branches is to us the web UI or merge queue of your code hosting service, as you already do. git ship is for edge cases like developing in offline mode.

The ship command ("let's ship this feature") squash-merges a completed feature branch into the main branch and removes the feature branch. After the merge it pushes the main branch to share the new commit on it with the rest of the world.

Git ship opens the default editor with a prepopulated commit message that you can modify. You can submit an empty commit message to abort the shipping process.

This command ships only direct children of the main branch. To ship a child branch, you need to first ship or kill all its ancestor branches.


Similar to git commit, the -m parameter allows specifying the commit message via the CLI.


If you have configured the API tokens for GitHub, GitLab, or Gitea and the branch to be shipped has an open proposal, this command merges the proposal for the current branch on your origin server rather than on the local Git workspace.

If your origin server deletes shipped branches, for example GitHub's feature to automatically delete head branches, you can disable deleting remote branches.

If sync-before-ship is enabled, Git Town syncs the current branch before executing the ship. This allows you to resolve merge conflicts on the feature branch instead of on the main branch. This helps keep the main branch green, but can delay shipping.