Staging and committing
Click the // WIP row at the top of the graph to see your changes. The details panel shows Unstaged Files, Staged Files and the commit box.
Stage what you want
Section titled “Stage what you want”- A file: click its Stage button, double-click it, or press S. U unstages.
- Everything: ⇧⌘S stages all, ⇧⌘U unstages all.
- A hunk: open the file’s diff and use Stage, Unstage or Discard on the hunk.
- Some lines: select lines in the diff’s gutter, then stage, unstage or discard just those.
Show files as a flat list or a folder tree with the Path / Tree toggle. A folder’s menu stages, unstages, discards or stashes everything under it.
Discarding a file or lines can be undone. MyTwig keeps a copy first.
Write the message
Section titled “Write the message”The commit box starts from your commit.template if you have one.
- The summary counter turns amber past 50 characters and red past 72, and hints when the blank line after it is missing.
- Co-author adds a
Co-authored-bytrailer for anyone in the history. Sign off addsSigned-off-by. Recent reuses one of your recent messages. - The ✨ button writes a message from your staged changes with the AI provider you set up. See AI help.
- Amend changes the last commit instead.
⌘Enter commits. ⇧⌘Enter stages everything and commits. The Commit button’s options can commit and push in one go.
If a hook stops the commit, your message is kept, and Show Output shows everything the hook printed.
Signing
Section titled “Signing”Set a GPG, SSH or X.509 key in Settings → Signing to sign commits and tags by default. A checkbox in the commit box signs one commit or not. A commit’s details show whether its signature is verified.
The Stash button (⌥⌘S) stashes your changes. Its options can:
- add a message,
- keep the staged changes in place,
- stash only what’s staged,
- take a snapshot: a stash that leaves your changes where they are.
A single file can be stashed from its menu. Stashes show in the graph as dashed nodes above the commit they were made on, and in the left panel. Click one to see its changes; right-click to apply, pop, delete or make a branch from it; or drag it onto the working tree to apply it.
Absorb fixes into earlier commits
Section titled “Absorb fixes into earlier commits”Made a fix that belongs in a commit you haven’t pushed yet? Stage it and choose Absorb Staged Changes… in the Staged Files bar or the palette. MyTwig finds the commit that last changed those lines and folds each change into it. Changes it can’t place stay staged, and the dialog tells you which and why before anything happens. Only your branch’s unpushed commits are touched. Undo puts everything back.
Split a commit
Section titled “Split a commit”Split Commit… in a commit’s menu opens the split view. Give each changed line, hunk or file to one of several new commits, write their messages, and click Split Commit. Later commits are replayed on top unchanged.
Split Changes into Commits… in the palette does the same with your uncommitted changes. With an AI provider set, Group with AI proposes the commits and messages for you to check first.
Ignore files
Section titled “Ignore files”Right-click an untracked file to ignore it, its extension, or its folder, in .gitignore or just for this clone in .git/info/exclude. The same menu adds common templates for Go, Node, Python, Java, Rust, Swift, C and C++ projects, operating systems and editors.
Patches
Section titled “Patches”Save a commit, several commits, or your changes as a patch from their menus or Repository → Save Changes as Patch…. Repository → Apply Patch…, or dropping a patch on the window, shows the files it changes and whether it applies cleanly before applying it.