Branches are called lanes
The rename, and the more important thing underneath it.
Written By Dustin
Last updated About 1 month ago
tovio lane is what you would call git branch. The rename exists because the underlying object is genuinely different.
A lane is a CRDT reference
A Git branch is a pointer, and two people moving it independently produce a conflict that one of them must resolve by force. A lane is a conflict-free replicated reference ordered by a hybrid logical clock: two replicas that advance the same lane converge.
This is why the native path has no diverged-history error, no pull-before-you-push, and no force-push ritual.
The commands
tovio lane # list, marking the current onetovio lane feature-x # create at the current tiptovio lane -d feature-x # delete (undoable)tovio switch feature-x # move to it, carrying dirty worktovio land --into main # integrateThe name is one positional argument: omit it to list, give it to create, add -d (or --delete) to delete. Deleting a lane is fully undoable โ it never strands work โ and deleting the lane you are standing on is refused.
tovio branch, tovio br and tovio checkout are hidden git-compat aliases that take the same arguments and print a note. tovio checkout -b <name> creates the lane at the current tip and switches to it, and records which lane it came from so auto-sync knows its upstream.
Landing is not always a merge commit
tovio land --into main # the default: merge or fast-forwardtovio land lane-a lane-b --into main # native N-way (octopus) landtovio land --into main --dry-run --explain--dry-run assesses the land and advances nothing; adding --explain prints the whole merge trace โ base, per-file algebra, and every gate. --rebase integrates by re-deriving the source onto the target instead of writing a merge commit, which gives you a linear mainline at the cost of re-signing each change as the lander. It is opt-in and two-way only, and never the default.
Tags are not lanes
A tag is immutable. Re-pointing an existing tag at a different commit is refused with TVO-TAG-001 unless you pass --force and hold the authority for it. That is deliberate: a tag that moves silently is a supply-chain problem.
Was this helpful?
More in Coming from Git
The Git to TOVIO cheat sheetImport a Git repositoryWhat import carries over, and what it does notWhat replaces git stash, reset and reflogStill need help? Ask the team