Skip to content

v0.17.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Oct 14:59
· 129 commits to main since this release

Added

  • Keyboard shortcuts: in the lists of changed files (once clicked), the arrows go from file to file with its diff, Space stages or unstages the files checked or the one open and goes on to the next, and Delete discards them after asking. New shortcuts for fetch (Ctrl+Shift+F), a new branch (Ctrl+B), stashing (Ctrl+Shift+S), going to a tab by its number (Ctrl+1…9) and Settings (Ctrl+,); F1 lists them all in Settings → Keyboard shortcuts, and the toolbar's tooltips name them. On macOS, ⌘ instead of Ctrl.
  • Install git-lfs from the app: a repository that keeps its large files in Git LFS, opened or cloned on a computer without git-lfs, asks once whether to install it, and the LFS section offers it too. On Windows the official git-lfs is downloaded, checked against its published checksum and installed for the user only, without administrator rights; on macOS it is installed with Homebrew, and on Linux with the system's package manager, which asks for the password (where the app cannot install it, it says how). The repository is then set up and its real files replace the small pointers, without restarting the app.
  • Choose and arrange the graph's columns: right-click its header to hide or show the author, date and SHA columns, drag their headers to put them in another order, as with the tabs, and drag their edge to make them wider or narrower (a double click gives back the usual width); the choice is kept for every repository.
  • Commit message template: with git's commit.template set (for a repository or globally), the commit box starts from it — its first line as the summary, the rest as the description, without its comment lines — and again after each commit. As in git, the template left as it is cannot be committed, and Amend from it takes the last commit's message.

Fixed

  • Lines picked in a diff (to stage or unstage them on their own) were let go as soon as the repository was read again — coming back to the window, which a click from another app does, or any file changing on disk — although the diff had not changed. They now stay picked; they are still let go when the file itself changes, since its lines may have moved.
  • In a narrow window the side panels could squeeze the graph between them to nothing. They now narrow first (their widths come back when the window is wider), the graph keeps room to be seen and scrolls sideways when its columns do not fit, instead of cutting the last ones off, and the toolbar keeps its buttons' icons, with their names in the tooltips, instead of running the repository's name over them.
  • git-lfs installed where the app did not look (Homebrew's folders, for an app opened from the Finder on macOS; a per-user install on Windows) was reported as missing: it is now found there.
  • Installing git-lfs while the app was open was only noticed after the next checkout, so locks did not load until then: coming back to the window now notices it.
  • An account whose token cannot be read on this computer (a profile copied from another computer or user account) made the pull requests section disappear without a word. The section now says so and links to Settings → Accounts, where signing in again or a new token fixes it.
  • The history of a file renamed and staged, but not committed yet, was empty: it now follows the file back from the name it has in the last commit.
  • The history of a file whose name has quotes, backslashes or tabs (possible on Linux and macOS) showed an empty diff for each commit: git writes those names quoted, and they are now read back as they are.
  • Blame failed in every repository without the file blame.ignoreRevsFile names (a setting often made globally for the repositories that have one, such as .git-blame-ignore-revs). Files that are missing are now left out; the ones that are there still apply.
  • Pressing Undo (or Redo) again before the first one finished applied the same change twice; a press while one is being applied is now ignored.
  • The pull request list stopped at the 50 most recently updated: it now reads the next pages too, up to 500.
  • A clone with an account that succeeded but could not be set to use that account was reported as a failed clone, and not opened. It now opens, and says the account has to be picked again.
  • Two quick checkouts could leave the LFS patterns of the first one on screen until the next change.
  • Checking out a pull request failed with git's "cannot lock ref" when a local branch was in the way of its name: one named pr (for pr/7), or feature/old for a pull request from feature. It is now checked out as pr-7, or as pr/N like a branch name taken by other work.
  • Adding an account that is already there (by token, or signing in again) renewed its token but dropped the name and email typed in the form, and said the account was added: it now takes them, as editing the account would, and says the account was updated.
  • Pushing a branch that follows another one on purpose (git branch -u origin/develop) made it track the pushed branch instead; once the branch is published, that upstream is kept and the push goes where the branch already is, even when it follows another remote's branch. A first publish still tracks the new branch, as git push -u does, and a branch started from another remote's branch (upstream/main) asks which remote to publish it to when there are several. Create pull request accepts a branch that follows another one, if the branch of its name on the remote has its commits.
  • An open file history, folder history or blame is read again after a commit, checkout or pull (in the app or outside it), keeping the commit picked; it used to show what it found when opened.
  • A conflicted file deleted on both sides showed a raw "ENOENT" error in the conflict editor; it now says what happened and what the buttons do.
  • Shift+click on a file's checkbox gives the whole range the state that checkbox takes: a range can now be unchecked that way too, not only checked.
  • Ignore on a file whose name has [, *, ? or a backslash (pages/[id].tsx) ignored other files its name matched as a pattern, not that one: the name is now written literally in .gitignore.
  • A merge, cherry-pick, revert or rebase (by drag and drop or from a menu) that stops for something other than conflicts says what git found, without its hints about commands the app does not offer — as the interactive rebase already did.
  • A conflicted file marked resolved from the list (its button or menu) left the conflict editor showing it; the staged result is shown instead. Going from the conflict editor to a plain diff in the same pane could also leave the window blank.

Code signing policy · Privacy policy