This project uses GitButler for version control. The working branch is gitbutler/workspace.
Use but (the GitButler CLI) instead of raw git commands for all branching, committing, and
pushing operations. Standard git read commands (log, blame, etc.) are fine.
but status # Overview of branches, uncommitted changes, commit status
but pull --check # Check if branches can cleanly rebase on target
but pull # Rebase all applied branches onto latest target branchbut branch new "my-feature" # Create a new branch
but branch # List applied branchesbut status # See uncommitted files and their CLI IDs
but diff # Review all uncommitted changes
but diff <file-id> # Review changes in a specific file
but commit <branch> -m "message" # Commit all uncommitted changes to a branch
but commit <branch> -o -m "message" # Commit only staged changes (--only)
but commit <branch> -i # Commit with AI-generated messageWith multiple branches applied, stage files to specific branches first:
but stage <file-or-hunk> <branch> # Stage a file/hunk to a specific branchbut reword <commit> -m "new msg" # Edit a commit message
but squash <c1> <c2> # Squash c1 into c2
but squash <branch> # Squash all commits in a branch into one
but absorb # Auto-amend uncommitted changes into the right commits
but absorb --dry-run # Preview what absorb would do
but move <commit> <target> # Move a commit to a different position
but amend <file> <commit> # Amend a specific file into a specific commitbut push <branch> # Push a branch to remote
but push # Push all branches with unpushed commits
but pr new # Create a pull requestbut undo # Undo the last operation
but oplog # View operation history
but oplog snapshot "checkpoint msg" # Create a named snapshot
but oplog restore <oplog-sha> # Restore to any previous statebut mark <branch> # Auto-stage new changes to this branch
but mark <commit> # Auto-amend new changes into this commit
but unmark # Remove all marks- No
git add/git commit— usebut stageandbut commit - No
git rebase -i— usebut squash,but move,but rewordinstead - Safe history editing — GitButler automatically rebases dependent commits
but undo— recovers from any operation, including uncommitted changes- Multiple branches can be applied simultaneously (virtual branches)