Download Latest Version GitDesktop_0.12.2_x64_en-US.msi (20.3 MB) Google Add to Preferred Sources
Home / v0.9.4
Name Modified Size InfoDownloads / Week
Parent folder
latest.json 2026-08-20 11.8 kB
GitDesktop_0.9.4_universal.app.tar.gz.sig 2026-08-20 408 Bytes
GitDesktop_0.9.4_universal.app.tar.gz 2026-08-20 36.9 MB
GitDesktop_0.9.4_universal.dmg 2026-08-20 36.0 MB
GitDesktop_0.9.4_x64-setup.exe.sig 2026-08-20 420 Bytes
GitDesktop_0.9.4_x64-setup.exe 2026-08-20 13.3 MB
GitDesktop_0.9.4_x64_en-US.msi.sig 2026-08-20 420 Bytes
GitDesktop_0.9.4_x64_en-US.msi 2026-08-20 19.1 MB
GitDesktop_0.9.4_amd64.AppImage.sig 2026-08-20 424 Bytes
GitDesktop-0.9.4-1.x86_64.rpm.sig 2026-08-20 420 Bytes
GitDesktop_0.9.4_amd64.AppImage 2026-08-20 93.3 MB
GitDesktop-0.9.4-1.x86_64.rpm 2026-08-20 20.6 MB
GitDesktop_0.9.4_amd64.deb.sig 2026-08-20 416 Bytes
GitDesktop_0.9.4_amd64.deb 2026-08-20 20.6 MB
GitDesktop v0.9.4 source code.tar.gz 2026-08-20 6.6 MB
GitDesktop v0.9.4 source code.zip 2026-08-20 7.4 MB
README.md 2026-08-20 4.4 kB
Totals: 17 Items   253.8 MB 0

Added

  • Branch rules gains a Promotion branches list — name the branches whose pull requests carry work onward, like staging, and GitDesktop stops offering to update those pull requests from their base. It covers the stagingproduction flows and upstream-lens pull requests the default-branch detection can't see, and the strip names the head as a promotion branch for this repository.

Changed

  • Settings → About now flags a Git or GitHub CLI that's older than a feature needs, naming what breaks and offering the download link; opening an issue with an outdated GitHub CLI now says which version it needs.
  • Reverting, cherry-picking, checking out a commit or a tag, taking a whole side of a conflicted file, and applying or popping a stash from the Stashes dialog now confirm first, each naming exactly what changes and what stays safe. Undoing a branch's first commit confirms too, since that one deletes the branch's ref instead of moving it back. The Change base of… and rebase dialogs now say up front that the commits they replay get new ids.
  • The AI-generate shortcut now works in the dialogs that carry a Generate button (branches, issue drafts, release notes, squash messages, scripts, publish, and repo settings, alongside the commit box and PR dialogs it already served), and those buttons' tooltips show the current binding. Edit history's per-commit reword buttons are the exception. The shortcut's label in Settings → Keyboard is now Generate with AI. Alongside: the commit box's Commit tooltip shows your actual binding rather than a hardcoded one, and Enter in the task dialog's description no longer fires a generation with nothing to go on.
  • The issue view's comment box now spans the full width beneath the sidebar, matching pull requests and discussions, and Comment sits at the bottom-right where a form's submit is looked for, with close and reopen to its left. The same widening applies to Jira issues. A new palette action, Focus the comment box, jumps to the comment box on any conversation view. Closing an issue, pull request, or discussion on your forge now asks first, since watchers are notified and reopening can't unsend that.
  • Merging a stacked pull request into a base that uses GitHub's merge queue now leaves a Queued to merge chip on the pull request beside the toast, so the waiting state stays visible until the queue lands it or the pull request closes. The chip lasts for the app session.

Fixed

  • Forking a repository from the Explore tab works with GitHub CLI 2.88 and newer.
  • With Hide AI features on, the squash dialog and Edit history's reword rows no longer show their Generate buttons.
  • A notification now lands exactly where its event happened: clicking a pull-request entry applies the fork/upstream view the event belongs to before opening the PR, and a review entry scrolls the conversation to the review itself once the data is in (GitHub). Older entries keep working as before.
  • Promotion pull requests (ones whose head is the repository's default branch, like mainstaging) no longer offer Update branch, which would merge the base back into the default branch. The strip explains that the gap is expected and needs no closing, and the Update button now names the operation it performs (Merges base into head).
  • A remote-rebased branch gets the right remedy. When the remote rewrote your branch (a server-side rebase or force-push, like GitHub's Update branch → rebase) and every commit here already landed upstream under new ids, the Pull menu and the branch's context menu offer a confirmed Reset to origin/… that lines the two up without losing anything, and the force-push confirmation warns that pushing would put the old history back. With commits of your own on top, the confirmation counts what's at stake and points at Pull with rebase, and the merge routes that would duplicate the rewritten history stand down with the reason. When Git can't confirm the rewrite (no reflog to read, say), the usual divergence controls stay exactly as they are and no reset is offered. And once GitHub finishes an Update branch, a background fetch brings the header's counts current.
Source: README.md, updated 2026-08-20