Editor

Publishing

The Publish tab is where you commit changes, sync with GitHub, manage branches, merge, promote, stash work, and review history. It lives in the left sidebar of the editor.


A typical workflow uses multiple branches: a production branch for the live site, a staging branch for review, and feature branches for work in progress. You edit on staging or a feature branch, commit and sync, then promote to production when ready.


Staging & Committing

When you edit pages or components, changed files appear in the Changes section with a status indicator:

  • M -- modified

  • A -- added (new file)

  • D -- deleted

Click a file to see its diff on the right side. Use the + button to stage individual files, or Stage All to stage everything. You can unstage files with the - button, or discard changes entirely with the x button (this reverts the file).

To commit, write a message in the commit form and press Cmd+Enter (macOS) or Ctrl+Enter (Windows). If no files are staged, the commit automatically stages all changes.

You can also click the sparkles icon to auto-generate a commit message from the current diff.

Note: Direct commits to the production branch are disabled. You must commit to staging (or a feature branch) and promote to production.


Syncing with Remote

Once your project is connected to GitHub, the branch header shows how many commits you are ahead (local commits not yet pushed) and behind (remote commits not yet pulled).

Button

What it does

Sync

Pulls remote changes then pushes your local commits in one step

Pull

Fetches and merges remote changes into your current branch

Publish

Pushes a local-only branch to GitHub for the first time


Branches

Expand the Branches section to see all local branches. Remote-only branches appear below in italics with a Get button to check them out locally.

  • See the current branch -- highlighted at the top of the list

  • Create a branch -- click the + button, enter a name, and a new branch is created from a source branch you choose

  • Switch branches -- click a branch name to check it out

  • Delete a branch -- click the trash icon (production and staging cannot be deleted)

  • Merge a branch -- click the merge icon to pull its changes into your current branch


Merging a Branch

Merging brings commits from another branch into your current branch. This is useful when you want to incorporate work done on a feature branch, or pull the latest changes from staging.

  1. Make sure you are on the branch that should receive the changes.

  2. In the Branches panel, find the branch you want to merge from.

  3. Click the merge icon next to that branch.

  4. A preview dialog shows the incoming commits -- review what will be merged.

  5. Click Merge to confirm.

If the merge completes without conflicts, a merge commit is created automatically and the editor reloads with the updated content.


How Merge Works

When you merge branch B into branch A, git finds commits on B that A does not have and applies them. A merge commit is created that ties both histories together.

Before merge:

  A:  o---o---o
           \
  B:        o---o---o

After merging B into A:

  A:  o---o---o-------M   (M = merge commit)
           \         /
  B:        o---o---o

Both sets of commits remain intact. Nothing is lost or overwritten -- the merge commit simply combines the two lines of work.


Conflicts

If both branches changed the same file in incompatible ways, git cannot merge automatically. This is called a merge conflict.

When conflicts occur, Meno shows a conflict resolution UI:

  1. A list of conflicted files appears.

  2. For each file, choose to keep your version (current branch) or accept the incoming version (the branch being merged).

  3. A side-by-side diff view shows both versions so you can make an informed choice.

  4. Once all conflicts are resolved, click Complete Merge to finalize the merge commit.

You can also abort the merge at any time to return to the state before the merge started.


Promoting vs Merging

Meno has two ways to move changes between branches. They go in opposite directions:

Action

Direction

Use case

Promote

Pushes your current branch forward into another branch

Deploy staging to production

Merge

Pulls another branch's commits into your current branch

Bring a feature branch into staging, or sync latest changes

In short: Promote sends changes outward (current -> target). Merge brings changes inward (source -> current). Promote also syncs to remote automatically, while merge is local only.


Stash

Stashing lets you save uncommitted changes without creating a commit. This is useful when you need to switch branches but are not ready to commit.

  • Stash -- saves your current changes with an optional message

  • Apply -- restores the stash without removing it (useful for applying to multiple branches)

  • Pop -- restores the stash and removes it

  • Drop -- deletes a stash permanently (requires confirmation)

Each stash shows its message and a relative timestamp (e.g. "2m ago").


History

Expand the History section to see the last 20 commits on the current branch. Each entry shows the commit SHA, message, author, and timestamp.

  • Expand a commit -- click to see which files changed (A = added, M = modified, D = deleted)

  • Preview a commit -- view the project as it looked at that point in time (enters detached HEAD state)

  • Restore a file -- bring back a single file from a past commit to your working directory

  • View a diff -- click any file in a commit to see a side-by-side diff on the right panel


Git Remote URL

At the bottom of the Publish tab you can manage the remote URL that connects your project to GitHub.

  • View the current remote URL

  • Open in browser -- jump to the GitHub repo

  • Edit -- change the remote URL to point to a different repo

  • Remove -- unlink the project from GitHub entirely

If no remote is set, a Set Git URL button appears instead. Sync, pull, and push require a remote URL.


Next Steps

Building the future of digital experiences, one website at a time

© 2026 Company. All rights reserved.