# One commit out. One click back.

> Publishing is a normal Git commit to the branch you already deploy from. There is no content database, nothing added to your site, and every publish comes back out in a single click.

## Why publishing stays boring.

- **One commit per publish:** Everything the client has pending ships together as one labelled commit, not one commit per keystroke.
- **Your pipeline, unchanged:** Your host rebuilds exactly as if you had pushed it yourself. No new build step and no new service.
- **A failed build cannot break the site:** Your host keeps serving the last good deployment, so the live site does not change until a build succeeds.
- **Nothing to migrate off:** The repository stays the only source of truth. If you stop using CMS Brew tomorrow, the content is already where it lives.

## From draft to live, and back again.

1. **Edits stack up as a draft** The client can make ten changes across a page before anything is committed.
2. **Publish writes one commit** It goes to the branch your site deploys from, labelled with what changed.
3. **Your host rebuilds** The same pipeline that has always built your site builds it again.
4. **Revert if you need to** Any publish comes back out in one click, and the history keeps the record either way.

## Use cases

- **A client publishes something wrong:** You do not need to open a terminal. One click takes the publish back out and the site rebuilds.
  > A price typo goes live at four in the afternoon. Revert takes it back out before you have finished reading the message about it.
- **Reviewing what changed:** Every publish is a labelled commit in your own history, so the tools you already use work on it.
- **Handing a site back:** There is nothing to unwind. The content is already committed to the repository you deliver.
- **Auditing a change:** Version history keeps the person and the time on every published state.

## FAQ

### Does publishing open a pull request?

No. A publish commits straight to the branch your site deploys from, so the client's change goes live without a review step. Requests that need code take a different path and become draft pull requests instead.

### What happens if the build fails?

Your host keeps serving the last good deployment. The live site does not change until a build succeeds, so a bad publish cannot take the site down.

### Is there a content database behind this?

No. Your repository holds the content exactly as it did before, and nothing is added to your site at runtime. That is also why one click can revert a publish.

### Can I undo one edit instead of a whole publish?

Yes. Each reply in the conversation carries its own undo, which takes that single change back out of the pending draft before anything ships.

---

- [All features](https://cmsbrew.com/features)
- [Guards](https://cmsbrew.com/features/guards)
- [Real-site preview](https://cmsbrew.com/features/preview)
- [Connect and map](https://cmsbrew.com/features/connect-and-map)
