Repository navigation
Shelf
The shelf puts uncommitted changes aside without committing them. You pick the files, give the change a name, and Nibtree saves it as a patch and takes it out of your files. Later you bring it back, all of it or only some files.
Both put work aside. A stash is git's own feature (see Stashes): git saves your changes as special commits and you get them back with apply or pop. The shelf is Nibtree's: each shelved change is a patch file (a text file that lists the changed lines) kept inside your repository's .git folder.
Use the shelf when you want to:
- put aside only some files, not everything;
- keep the changes in your files and just save a copy;
- give each change a name and see its files and diffs in a list;
- bring back only some files of a shelved change.
Like a stash, the shelf is local to your computer: it is never committed or pushed. Linked worktrees of the same repository share one shelf (see Worktrees).
Open the Shelve Changes dialog in any of these ways:
- Git > Uncommitted Changes > Shelve Changes... in the menu bar;
- the repository's ... menu in the Changes sidebar: Stash > Shelve Changes...;
- right-click a changed file in Changes and choose Shelve Changes... (only that file starts ticked);
- the Shelve Changes... button on the Shelf tab.

In the dialog:
- Name starts as "Changes from main 2026-10-01 14:03" (the branch and the time). Change it to something you will recognise.
- Tick the files to shelve. Each row shows a letter (M modified, A added, D deleted, R renamed, U new and not yet tracked) and a hint like staged or new. The top check box ticks all of them.
- Tick Keep changes in the working tree to save a copy without touching your files. (The working tree is your project folder as you see it on disk.)
- Click Shelve.
A note says, for example, Shelved 3 files, and the changes leave your files (unless you kept them). Files with conflicts are left out of the list until you resolve them, and the dialog says how many. Submodules and nested repositories are not offered either: they are not changes of this repository.
Choose Git > Uncommitted Changes > Show Shelf, or Stash > Show Shelf in the repository's ... menu. The bottom panel opens on the Shelf tab, next to Terminal.

The tab shows the shelf of the active repository (its name is at the top left). Each shelved change shows its name, how many files it has and when it was shelved, newest first. Click it to fold or unfold its files. Hover it for two quick buttons: Unshelve... (up arrow) and Delete... (trash). The refresh button reads the list again.
Double-click a file, or select it and press Enter, to open its diff in a read-only editor tab named Shelved: file name. The left side is Base (the file as it was when you shelved), the right side is Shelved (with your changes). If the original version is gone from the repository, a note says only the changed lines can show.
Right-click a shelved change and choose Show Diff to open its first file.
Right-click a shelved change and choose Unshelve..., or use the hover button. To bring back only some files, select them (Cmd-click adds a file, Shift-click a range; only files of the change you right-click count), right-click and choose Unshelve Selected Files... (with several files selected it reads, for example, Unshelve 3 files...). Unshelve All... in the same menu brings back the whole change.
You then choose:
- Unshelve: apply the changes, then remove the applied files from the shelf. When every file is applied, the shelved change goes away.
- Unshelve and Keep on Shelf: apply the changes and keep them shelved, for example to apply them on another branch too.
The changes come back into your files, unstaged: stage them again if you need to. New files show as untracked again. If the files changed since you shelved, Nibtree tries a three-way merge: it compares your file and the shelved one with the version they both came from. When the same lines changed on both sides, you get conflicts: the Conflicts dialog opens and the shelved change stays on the shelf, so nothing is lost. See Resolving Conflicts.
Right-click a shelved change:
- Rename... changes its name.
- Delete... removes it from the shelf. You are asked first, because this cannot be undone.
You are changing the cart in storefront and also fixed a typo in the README. You want to commit the typo now and keep the cart work for later.
- Right-click
src/cart.tsin Changes and choose Shelve Changes.... - Name it "Cart quantities" and click Shelve.
- Commit the README fix.
- Open Git > Uncommitted Changes > Show Shelf, hover "Cart quantities" and click Unshelve..., then Unshelve.
These pages are generated from docs/wiki. To correct something, open a pull request against the source file; edits made here are overwritten.
Using Nibtree
- Getting Started
- Welcome Screen
- Workspaces
- Files Panel
- File Operations
- File Icons
- Rounded Panels
- Editor and Tabs
- Pin Reorder and Wrap Tabs
- Single Tab Title
- Split Editor
- New File and Unsaved Changes
- Unload Hidden Tabs
- Editing Code
- Code Appearance
- Markdown Editor
- Image and PDF Preview
- Search Everywhere
- Recent Files
- Navigation Bar
- Find and Replace
- Changes and Commits
- Sign In Prompts
- Commit Box Layout
- Repository Actions
- Commit Options
- Ignoring Files
- Diffs
- Inline Diffs
- Staging View
- Revert a Change
- Resolving Conflicts
- Merge Tool
- Blame
- History and Log
- Merge Commits
- Branches and Tags
- Branches Popup
- Remotes
- Stashes
- Shelf
- Git Menu
- Git Dialogs
- Interactive Rebase
- Worktrees
- AI Agents
- AI Tasks
- AI Usage
- Keep Computer Awake
- Submodules
- Git LFS
- GitHub
- Git Console
- Terminal
- Terminal Features
- Scripts
- Navigation
- Menus
- Settings
- Settings Search
- Color Themes
- Settings Terminal and Automation
- Settings Files
- Updates
- Status Bar and Help
- Notifications
- Memory Use
- Clear Cache
- MCP and CLI
- Git Mergetool
- Keyboard Shortcuts
- Keyboard Shortcuts Editor
- Troubleshooting
- Troubleshooting Git
Developers
- Developer Guide
- Architecture
- Project Layout
- Backend
- How Folder Watching Works
- Folder Watching Bugs We Fixed
- How Workspace Files Work
- How the Preview Scheme Works
- Backend Services
- How Terminal Features Work
- Terminal Bugs We Fixed
- Frontend
- How the Rich Markdown Editor Works
- Rich Markdown Bugs We Fixed
- Git Menu Links
- Menu Keys and Routing
- Frontend Modules
- Blame Bugs We Fixed
- Project Color And Title Bar
- One Diff View
- Diff Bugs We Fixed
- Merge Tool Layouts
- Merge Tool Bugs We Fixed
- Color Theme Bugs We Fixed
- How the Connected Diff Works
- Rounded Panels Bugs We Fixed
- Update Bugs We Fixed
- Status Bar Bugs We Fixed
- MCP and CLI Bugs We Fixed
- Repository Actions Bugs We Fixed
- How the Changes Tab Works
- CodeMirror Patterns
- How the Cursor Works
- How Editor Features Work
- How the Path Bar Works
- Commands and Events
- Settings Reference
- Commands Workspace and Changes
- Commands Branches and Remotes
- Commands History and Extras
- Commands App and Tools
- Testing
- Test Suites
- Debugging
- Debugging with MCP
- Measuring Setting Memory
- How Terminal Memory Is Measured
- How Markdown Diagrams Work
- Releases and CI
- Publishing the Wiki
- Versioning and Changelog
- Browser Version Packages
- Browser Release Checks
- Docker Image
- Platforms and Signing
- Windows Support
- Windows Bugs We Fixed
- Windows MCP and CLI
- Docs and Screenshots
- UI Library
- UI Library MCP
- UI Library Bugs
- UI Library Migration
- Contributing
How features work
- Welcome screen
- Workspaces and folders
- Files panel
- File operations
- File icons
- Editor and tabs
- Pin, reorder and wrap tabs
- Single tab title
- Split editor
- New File and unsaved changes
- Unload hidden tabs
- Editing code
- Code appearance
- Markdown editor
- Image and PDF preview
- Search Everywhere
- Recent Files
- Navigation Bar
- Find and replace
- Changes and commits
- Sign-in prompts
- Commit box layout
- Repository actions
- Commit options
- Ignoring files
- Diffs
- Inline diffs
- Staging view
- Revert a change
- Resolving conflicts
- Merge tool
- Blame
- History and log
- Merge commits
- Commit tabs
- Branches and tags
- Branches popup
- Remotes
- Stashes
- Shelf
- Git menu
- Git dialogs
- Interactive rebase
- Worktrees
- AI agents
- AI usage
- Keep computer awake
- AI tasks
- Submodules
- Git LFS
- GitHub account
- Git Console
- Back and Forward
- Integrated terminal
- Scripts tool window
- Menu bar
- Settings
- Search in Settings
- Color themes
- Rounded panels
- Updates and release channels
- Status bar and help links
- Notifications
- Memory readout and memory log
- Clear Cache
- MCP server and command line tool
- git mergetool mode