Capabilities: TinyGit

Capabilities

Everything TinyGit can do with Git.

TinyGit runs Git in-process, via libgit2, with no command-line git to install or shell out to. Here's the complete, current list of what it supports.

Repositories & syncing

Staging & committing

OperationDetails
Stage / unstagePer file or all at once.
Discard changesPer file or all at once.
Stop trackingUntrack a file while leaving it on disk.
Delete a fileRemoves it straight to the Trash.
CommitCommit staged changes.

Branches

OperationDetails
Create / checkout / rename / deleteRename preserves the branch's reflog.
Track a remote branchCheckout a remote branch as a new local tracking branch.
MergeMerge a local branch into the current branch. Real conflicts hand off to the in-app 3-way editor.
Squash from here to latestFold a commit and everything after it, up to the tip, into one.
Continue / abortContinue or abort an in-progress merge, cherry-pick, revert, or rebase.

Rewriting history

OperationDetails
Cherry-pickApply a commit from elsewhere onto the current branch.
RevertCreate a new commit undoing a previous one.
ResetSoft, mixed, or hard.

Stash

OperationDetails
Create / apply / drop / listFull stash lifecycle, with a diff view per stashed file.

Tags

OperationDetails
Create / delete / renameRename recreates the tag under the new name, since Git has no native rename for tags.
Checkout a tagLands on a detached HEAD, same as checking out a commit.

Remotes

OperationDetails
Add / remove / renameAlso change a remote's URL.
Delete a remote branchDeletes the branch on the remote.

Conflict resolution

OperationDetails
In-app 3-way editorTake one side, take both, or hand-edit each conflict, then stage the result.

Repository upkeep

OperationDetails
Edit .gitignorePer-repository or the global excludes file.
Edit Git configRepository or global config, directly.
OptimizeWrites a commit-graph, then a best-effort fetch-with-prune to drop stale remote-tracking branches.

Authentication

OperationDetails
SSHUses your existing keys, SSH agent, and ~/.ssh/config.
HTTPSUses a Personal Access Token you add per host.

Everyday extras

Not currently supported

A few things TinyGit deliberately doesn't do yet, so there's no guessing:

  • Starting a rebase. libgit2 has no interactive rebase, so "Squash from here to latest" (above) is the supported substitute.
  • Git submodules.
  • Git LFS.
  • Multiple worktrees per repository.
  • Blame / line history.
  • GPG-signed commits.
  • HTTPS credential helpers (the macOS Keychain helper, gh auth, and similar). Use a Personal Access Token instead.
  • Full gc / repack. "Optimize" (above) is the in-process stand-in.
  • Launching an external merge tool. Replaced by the built-in 3-way editor.