Using git-ida from the command line
Teams stores your databases in an ordinary Git repository, so you are never locked into IDA's UI to manage them. You can clone, fetch, pull, push, branch, tag, and inspect history with the standard git command line or any Git client.
The one IDA-specific piece is git-ida: a small helper that lets Git store, transfer, and reconstruct packed IDA databases efficiently. This page explains how to make git-ida available to your shell and how to use it directly.
What git-ida is
The git-ida binary ships with IDA and lives under tools/teams/ in your IDA installation (git-ida on Linux/macOS, git-ida.exe on Windows).
Git invokes it as a subcommand: when you type git ida <something>, Git looks for an executable named git-ida on your PATH and runs it. IDA configures it as a Git filter so that, whenever a database is checked out or committed, Git transparently produces a clean, compact representation instead of a raw, opaque blob. That keeps repository size under control. A separate diff driver, also registered by git-ida, is what makes git diff produce a readable comparison. See Diffing IDA databases with git diff for details.
Storage, transport, and diffing of databases is what git-ida handles, running IDA itself behind the scenes. Resolving content conflicts is always done in IDA's merge view. See Diffing IDA databases with git diff for how git diff produces a readable, structural diff, and Merging and automerging for how conflicts are resolved.
Making git-ida available to your shell
The first time you use IDA with Teams add-on, IDA automatically registers git-ida in your global git configuration, so it works in any terminal session without manual setup.
First, check whether it already works:
git ida versionIf you see a version string (e.g. git-ida 1.x.x), you are done. Skip the rest of this section.
If you instead get an error like 'ida' is not a git command, pick one of the two options below.
Option A (recommended): add tools/teams to your PATH
Point your shell at IDA's tools/teams directory. Adjust the path to match your installation.
Linux / macOS (add to
~/.bashrc,~/.zshrc, …):
Windows (PowerShell, persistent for the current user):
Open a new terminal and run git ida version again to confirm.
Option B: define a git ida alias
If you would rather not change PATH, register a Git alias that points directly at the bundled binary. Quote the path if it contains spaces.
After this, git ida version, git ida initialize, etc. resolve through the alias regardless of PATH.
What IDA already configured for you
When a repository is created or cloned through IDA, a few local settings are written so that command-line use behaves the same as the in-IDA workflow. Knowing they exist helps when scripting:
filter.* (via .gitattributes)
The git-ida clean/smudge filter that compacts and reconstructs databases on commit/checkout.
pull.rebase = false
Makes a manual git pull use a merge (the same model IDA's Pull uses), so CLI and UI pulls behave consistently.
ida.path
Absolute path to the IDA executable, so git-ida can launch IDA when a diff or merge is required.
credential.helper
For HTTPS remotes, lets Git authenticate without re-prompting (credentials are stored by IDA in the OS keychain).
These are stored in the repository's local config (.git/config), so they travel with that working copy and do not affect your other repos.
Everyday command-line operations
Once git-ida is available, the usual Git commands work as expected:
Because the repository is a standard Git repository, third-party Git GUIs, IDE integrations, CI pipelines, and your provider's web UI all work too.
Switching branches
Switching to another branch checks out a different set of databases. Git does not always re-run the git-ida smudge filter on files it considers unchanged, so the databases in your working copy may not be fully reconstructed after a plain git switch / git checkout.
To be safe, force Git to re-materialize every file through the filter by resetting hard to the branch tip right after switching:
This is exactly what IDA does internally after cloning a repository, and it guarantees every database on the branch is correctly rebuilt.
Running git reset --hard discards uncommitted local changes. Before running it, commit or stash your work, and make sure none of the affected databases are open in IDA (the files are about to be overwritten on disk).
git ida initialize
The git ida initialize command configures the current repository to handle IDA databases: it registers the git-ida filter, writes the .gitattributes and .gitignore entries IDA relies on, and sets up the merge driver.
For example:
Useful flags:
--lfs
Track databases with Git LFS (recommended when databases exceed your server's file-size limit). Requires git-lfs to be installed.
--override
Re-apply the IDA configuration even if some of it is already present. Handy for repairing a repository whose .gitattributes/filter config got out of sync.
After running it, you can inspect what was set up:
Quick reference
Last updated
Was this helpful?
