Changelog
What changed in each gitty release, newest first. The source is
CHANGELOG.md in
the gitty repository, which follows Keep a Changelog
and Semantic Versioning.
Upgrading
Section titled “Upgrading”Upgrade the same way you installed — see Installation:
brew upgrade vedangp57/tap/gitty # Homebrewcargo install --locked gitty-cli # crates.ioThe shell installer always fetches the latest release, so running it again
upgrades too. gitty --version prints the version you have.
Released October 19, 2026. Release on GitHub · What’s new in 0.2.0
- A commit graph in History, shown by default. Its lanes are laid out as lazygit lays them out
(the layout is ported from lazygit, MIT):
●for a commit,◉for a merge and◎for the checked-out commit. Each branch keeps one theme colour from top to bottom, its labels are pills in that colour, and the current branch’s line is drawn heavy. Each commit keeps its one line from the list, with a spacer line under it that carries only the branch lines down to the next commit.history_graph_style = "compact"drops the spacers (one line per commit); any other value than"spaced"or"compact"warns and keeps"spaced".Lshows or hides the graph, andhistory_graph = falsestarts with it hidden. It steps aside during a search, aVrange, compare mode and in a History pane under 34 columns, and cuts lines wider than the pane with›. - Conflict help. Conflicted files head the Changes list with their number of blocks; selecting one
shows its blocks as two tinted sides under headers named for the operation (merge: Current /
Incoming; rebase: Base branch / Your commit; cherry-pick: Current branch / Picked commit; revert:
Current branch / Without change).
okeeps the first side,ttakes the second,bkeeps both,nandpmove between blocks,utakes the last resolution back andeopens the editor at the block. A resolution is written atomically and only over the text that was shown; a block with ambiguous markers is left to the editor, andconflict-marker-sizeis honoured. Conflicts without markers (binary, deleted by one side) are explained and settled whole after asking. Nothing is staged for you. The marker parser is adapted from druk (MIT). - A merge, rebase, cherry-pick or revert that stopped (in gitty or in another terminal) shows in the
top bar with its conflict count (
MERGING topic · 2 conflicts,REBASING feat · step 2/5 · 1 conflict).mcontinues it once nothing conflicts (no editor; the prepared message is used) or aborts it after asking. - A merge or pull (merge or rebase) that hits conflicts is left open and asks “Resolve now?”:
Enter goes to the first conflicted file,
aaborts, Esc decides later (mopens the dialog). - A branch picker (
B): Enter switches (a remote-only branch gets a local tracking branch),Ctrl-Ncreates,Ctrl-Rrenames,Ctrl-Ddeletes (asking twice when the branch has commits its upstream lacks, or HEAD without an upstream, as git judges it) andCtrl-Gmerges the highlighted branch into the checked-out one after asking. With uncommitted changes, switching offers “stash and switch” and merging “stash and merge”. After a switch the changes stay in the stash for you to apply or pop (a failed switch puts them back); after a conflicted merge they stay in the stash until you finish it (aborting from gitty puts them back). gitty never re-applies a stash by itself otherwise. - A stash list (
S):aapplies,ppops,ddrops (asks),nstashes the current changes under a message; each stash shows its age.Zin the Changes tab stashes with an optional message. Stashes include untracked files, and the prompts say so (with the count when there are more than 500). - A Files tab (
3): the working tree as a lazily loaded tree with a read-only, syntax-coloured viewer. Changed files show their Changes letter and colour, and folders with changes below them a●.ihides or shows ignored files (files_show_ignoredsets the start).eor a double-click opens the file in$EDITOR. Files named like secrets (.env, keys, tokens) are not read until you pressv. - The top bar shows
PR #<n>when the branch has a GitHub pull request, coloured by its state (open, draft, merged, closed; themes can setpr_open,pr_draft,pr_merged,pr_closedunder[ui]). Clicking it opens the pull request. It needs theghCLI logged in, is looked up in the background (at most every 30 seconds per branch, every 5 minutes while focused), ignores pull requests from forks, and keeps the last known badge through a failed lookup. Ropens the branch’s pull request on GitHub in the browser, or the new-pull-request page when there is none (or nogh). The branch must be pushed first.- A push rejected because the remote moved on (after an amend or a rebase) offers a force push with
lease. The question lists the remote commits it would remove; the lease is the commit you last
fetched, so git refuses if anyone pushed since.
main,masterand the branchorigin/HEADpoints to are never force pushed. - Twelve more built-in themes:
nord,one-dark,one-light,gruvbox-light,catppuccin-frappe,catppuccin-macchiato,tokyo-night-storm,tokyo-night-day,kanagawa,everforest-dark,ayu-mirageandnightfox, credited inTHIRD-PARTY-LICENSES.md. - A herdr plugin (
herdr-plugin/) that opens gitty in a popup on the focused pane’s repository, downloading a checksum-verified release binary when none is installed.
Changed
Section titled “Changed”- With the graph shown (the default), History lists commits in topological order (
git rev-list --topo-order) instead of by date;Lorhistory_graph = falsebrings the date order back. On a large repository without a commit-graph file the first rows wait for git’s sort (about 0.3 s per 100,000 commits); auto-tune writes that file on repositories with 10,000 commits or more. - While a conflicted file is selected in Changes,
pandumean previous conflict and undo the resolution, not pull and undo the last commit.
- Sideways scrolling (
h/l, the sideways wheel, Shift+wheel) in the diff and the Files viewer only happens when a line is wider than the pane, and stops at the end of the widest line.‹and›mark lines with text hidden on the left or right. - In compare mode the footer labels
b“other branch” (it picks another branch to compare with) instead of “branch”. - The footer no longer shows the hints of the pane underneath while a picker, prompt or confirmation is open.
- Outside a repository gitty prints
gitty: <dir> is not a git repository, without the internal source path.
Released October 5, 2026. Release on GitHub
Changed
Section titled “Changed”- Published on crates.io as
gitty-cli(cargo install --locked gitty-cli); the command is stillgitty. Release archives and the shell installer are now namedgitty-cli-…(gitty-cli-installer.sh); the Homebrew formula is stillgitty.
Released October 5, 2026. Release on GitHub
- A branch that was never pushed marks with ↑ the commits no remote branch has (what pushing it
would publish), and the top bar says
↑N not published, as GitHub Desktop does.
- An upstream set or removed outside gitty (
git push -uin a terminal) shows up on the next refresh; it used to need a restart. - When the branch has nothing to compare with, the last upstream’s ↑/↓ marks no longer stay.
- After committing everything, the Changes diff pane no longer shows the History tab’s file as its title.
- Switching from Changes back to History returns to the pane History had focused, not the Changes file list (or the commit editor, after a click on the tab).
- In split view, a long hunk header label no longer runs across the divider.
Released October 5, 2026. Release on GitHub
The first public release.
- History: every commit of HEAD and its upstream (or all refs,
r), with refs, ahead/behind marks, a commit detail header, and a file list (flat or a directory tree,t). - Diffs: syntax highlighting (tree-sitter, with a syntect fallback), changed-word emphasis,
unified or split view (
s, automatic on wide terminals), line wrap (W), expandable context, and whitespace modes (w). Added and deleted files always use the full width. - Changes: live status from the file system, staging by file, hunk or line (Space, gutter clicks and drags), discard with a copy in the Trash, and a commit box with amend, co-authors and undo.
- Network: fetch, pull (fast-forward, merge or rebase) and push with progress and cancel, credential and passphrase prompts inside the app, and a background fetch every few minutes.
- Search (
/: text, author,path:) across the whole history,Vranges with a combined diff, andbto compare HEAD with any branch. - Opening files in
$EDITORat a line and diffs in a configurable difftool. - A remappable keymap, 11 built-in themes plus user themes, and a TOML config.
- Automatic tuning of large repositories (commit-graph, untracked cache, fsmonitor where git
supports it), reverted exactly by
gitty untune.