# 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.