# Branching (/docs/compute/branching)
> For the complete Prisma documentation index, see [llms.txt](https://www.prisma.io/docs/llms.txt). A markdown version of any docs page is available by appending `.md` to its URL.
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](https://www.prisma.io/docs/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 [#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](https://www.prisma.io/docs/compute/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](https://www.prisma.io/docs/compute/deployments).
## How the CLI picks a branch [#how-the-cli-picks-a-branch]
Commands that take a branch resolve it in this order:
1. `--branch `, 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 [#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](https://www.prisma.io/docs/compute/deploy-on-push) deploys each push to it as a preview. To set this up, see the [GitHub integration docs](https://www.prisma.io/docs/compute/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](https://www.prisma.io/docs/composer/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 [#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 [#next-steps]
* [Environment variables](https://www.prisma.io/docs/compute/environment-variables): preview values and per-branch overrides.
* [Deploy on push](https://www.prisma.io/docs/compute/deploy-on-push): a preview environment for every branch you push.
* [GitHub integration](https://www.prisma.io/docs/compute/github): keep platform branches in sync with your repo.
## Related pages
- [`Alchemy`](https://www.prisma.io/docs/compute/alchemy): Provision Prisma Postgres and deploy applications to Prisma Compute in one TypeScript stack.
- [`Deploy Button`](https://www.prisma.io/docs/compute/deploy-button): Add a Deploy with Prisma button that copies a public Composer repository and starts a Composer-managed deployment.
- [`Deploy on push`](https://www.prisma.io/docs/compute/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`](https://www.prisma.io/docs/compute/deployments): How deploys create service versions on Prisma Compute, and how to inspect, promote, roll back, start, and stop them.
- [`Domains`](https://www.prisma.io/docs/compute/domains): Point a custom domain at a production app and the platform verifies DNS and provisions TLS for you.