Repository navigation
Git LFS
Git LFS (Large File Storage) is an add-on for git that keeps big files, like images, videos or design files, out of the repository's history. Git stores only a small pointer file (a few lines of text with the file's id and size), and the real content lives on the LFS server. When you check out a branch, LFS downloads the content and puts the real file in its place.
Nibtree works with LFS through the git-lfs tool, the same one you use in a terminal. Install it from git-lfs.com (or with Homebrew: brew install git-lfs).
Files stored in LFS have a small LFS tag:
- in the Changes sidebar, next to the file name;
- in the Files panel, next to the file name. See Files Panel.

Nibtree reads the list of LFS files once each time a repository's status refreshes, and only for repositories on screen, so it stays quick.
Comparing two pointer files line by line would tell you nothing, so the diff of an LFS file shows Stored in Git LFS and the sizes instead:
-
1.5 KB -> 2 MBwhen the file changed; -
Added: 2 MBfor a new file,Deleted: 1.5 KBfor a removed one; -
Size: 10 B, same contentwhen only something else changed, for example the file mode.
See Diffs for diffs in general.
If a repository uses LFS but git-lfs is missing, its large files are only pointer files on your disk. Nibtree tells you once, with a Git LFS Is Not Installed notice. Choose Get Git LFS to open the download page, or Not Now. It does not ask again.

The LFS commands below also check first. Without git-lfs, they show the same title with Get Git LFS and Cancel instead of running.
You find the LFS commands in two places, both for one repository:
- Git > LFS in the menu bar, for the active repository;
- the repository's ... menu in the Changes sidebar, under LFS.
| Item | What it does |
|---|---|
| Track Pattern... | Stores files that match a pattern in LFS from now on, for example *.psd. |
| Untrack Pattern... | Stops storing a pattern in LFS. |
| Pull LFS Objects | Downloads the LFS content of the current checkout and puts the real files in place. |
| Fetch LFS Objects | Downloads the content without changing your files. |
| Prune LFS Objects... | Deletes local copies of old LFS content that is already on the server. |
| Install Hooks | Sets up LFS for this repository only. |
In the repository menu, Pull, Fetch and Prune are disabled when the repository does not use LFS, and Untrack when there is no pattern to remove.
- Choose Git > LFS > Track Pattern....
- In Track with Git LFS, type a pattern in Pattern (added to .gitattributes), like
*.psdorassets/videos/**. - Click Track.
The pattern is added to the .gitattributes file at the root of the repository (the file where git keeps rules per path). Commit .gitattributes so everyone uses LFS for those files. Files you add from now on that match go to LFS. Files already committed stay as they are.
Choose Git > LFS > Untrack Pattern... and pick one of the patterns from .gitattributes. New files that match are stored in git again. Commit .gitattributes afterwards.
Pull LFS Objects is what you need after a clone without LFS, or after installing git-lfs: it replaces pointer files with the real content. Fetch LFS Objects only downloads, which is useful before going offline. Both show their progress in the status bar.
Prune LFS Objects... frees disk space. It asks first: content that recent commits do not need and that the server already has is deleted from your computer. It is downloaded again when needed.
Git LFS uses git hooks (small scripts git runs on commit, push and checkout) to upload and download content. Install Hooks sets them up for this repository only, which helps when a clone was made before git-lfs was installed.
You want to add design files to storefront without making the history huge.
- Choose Git > LFS > Track Pattern..., type
*.sketchand click Track. - Copy
homepage.sketchinto the repository. In Changes it shows the LFS tag. - Commit
.gitattributesandhomepage.sketchtogether and push. Git uploads the content to the LFS server.
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