new
Copies the canonical into `<canonical>-<name>` beside it, puts the copy on a branch called `<name>`, and prints the path.
gitto new <name> [<base>]Copies the canonical into <canonical>-<name> beside it, puts the copy on a
branch called <name>, and prints the path.
$ gitto new auth-fix
cloning storefront -> storefront-auth-fix by clonefile
repointed core.hooksPath at this clone's own hooks
branch auth-fix on origin/main, 4 submodules
/Users/you/work/storefront-auth-fixChoosing a base
<base> is any revision, and it defaults to origin/HEAD after a fetch, so a
clone starts from the line you branch from however stale the canonical is.
Passing HEAD means the canonical exactly as it stands, uncommitted work
included, which is how you hand an agent the state you are in. With any other
base the submodules move to the pointers that revision records; with HEAD
they are left alone, because you asked for what is there.
What it refuses
A filesystem that cannot share blocks, which is measured before anything is copied. A canonical that is itself a worktree, since its history lives in another directory and the copy would have none. A destination that already exists.
A failure after the copy has begun removes the partial clone before it exits, so a run that dies has left nothing behind.