# Branching (/docs/compute/branching)

Branches are isolated environments that map to your Git branches, so preview work never touches production.

Location: Compute > Branching

A branch is an isolated environment for one line of work. Every branch in a project owns its own services, deployments, and any databases created on it, so preview deploys never share Compute resources with production. One caveat: a database your app reaches through a `DATABASE_URL` environment variable is only as isolated as that variable's value. Give previews their own preview-scoped `DATABASE_URL`. See [Environment variables](/guides/features-2-compute-environment-variables) for details.

A platform branch usually matches a Git branch name, but in Prisma it is a real resource that owns its own services and databases:

## Production and preview

Every branch has a role:

- The **first branch** in a project is your production branch, usually `main`. It's protected and durable: with [deploy on push](/guides/integrations-deploy-on-push) set up, pushes to your default Git branch deploy to it, and automated cleanup never touches it.
- **Every other branch** is a preview by default: disposable resources for testing changes before they merge.

To learn more, see the [Deployments docs](/guides/features-2-compute-deployments).

## How the CLI picks a branch

Commands that take a branch resolve it in this order:

1. `--branch <name>`, if you pass it.
2. Your active Git branch.
3. `main`.

Inside a Git repo, running `service list` from `feature/search` targets the `feature/search` branch automatically. To target a branch explicitly:

#### bun

```bash
bunx prisma service list --branch feature/search
```

#### pnpm

```bash
pnpm prisma service list --branch feature/search
```

#### yarn

```bash
yarn prisma service list --branch feature/search
```

#### npm

```bash
npx prisma service list --branch feature/search
```

Inspect platform branches:

#### bun

```bash
bunx prisma branch list
```

#### pnpm

```bash
pnpm prisma branch list
```

#### yarn

```bash
yarn prisma branch list
```

#### npm

```bash
npx prisma branch list
```

Listing branches doesn't expand the services and databases inside them. Use the `service` and `postgres` commands to inspect those.

## Creating branches

You rarely create branches manually. They are created automatically:

- **From GitHub**: when a repo is connected, creating a Git branch creates the matching platform branch, and your repository's [deploy workflow](/guides/integrations-deploy-on-push) deploys each push to it as a preview. To set this up, see the [GitHub integration docs](/guides/integrations-github).
- **From the CLI**: commands that target a branch that doesn't exist yet, such as `service create --branch feature/search` or a [Composer stage deploy](/guides/workflows-deploying), create it.

Connecting GitHub doesn't create branches retroactively. It aligns your default branch with the repo's default branch and wires up automation for future events.

## Cleaning up

When GitHub is connected, deleting a Git branch tears down the matching platform branch, as long as it isn't your production or default branch. Those are always left alone.

## Next steps

- [Environment variables](/guides/features-2-compute-environment-variables): preview values and per-branch overrides.
- [Deploy on push](/guides/integrations-deploy-on-push): a preview environment for every branch you push.
- [GitHub integration](/guides/integrations-github): keep platform branches in sync with your repo.

## Related pages

- [`Alchemy`](/guides/integrations-alchemy): Provision Prisma Postgres and deploy applications to Prisma Compute in one TypeScript stack.
- [`Deploy Button`](/guides/integrations-deploy-button): Add a Deploy with Prisma button that copies a public Composer repository and starts a Composer-managed deployment.
- [`Deploy on push`](/guides/integrations-deploy-on-push): Graduate a Composer app from manual deploys to a Git workflow, with production deploys on push and an isolated preview environment per branch.
- [`Deployments`](/guides/features-2-compute-deployments): How deploys create service versions on Prisma Compute, and how to inspect, promote, roll back, start, and stop them.
- [`Domains`](/guides/features-2-compute-domains): Point a custom domain at a production app and the platform verifies DNS and provisions TLS for you.

## Related pages

- [Authentication & Tools](./authentication-tools-index.md)
- [Build](./build-index.md)
- [Changelog](../changelog.md)
- [Concepts](./concepts-index.md)
- [Console commands](./console-commands-index.md)
- [Contract Authoring](./contract-authoring-index.md)
- [Core Concepts](./core-concepts-index.md)
- [Data Modeling](./data-modeling-index.md)
- [Database](./database-index.md)
- [DB commands](./db-commands-index.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
