What's New in the Git client SmartGit

What's New in SmartGit 17

Real Dark Theme

Dark theme

SmartGit now supports an operating-system independent dark theme, which was our #1 requested feature on smartgit.userecho.com.

Rename Detection in working tree

Rename detection

Renamed files will now be detected in the working tree view, as git status does.

In addition to Git's rename detection, SmartGit will also detect renames for untracked/missing file pairs.

Conflict Solver: show base file

Conflict Solver Base File

From the Conflict Solver, you can now open an additional three-way-comparison for the conflict base file.

This becomes useful when investigating complex conflicts for which the file has been significantly changed in both branches.

Compare: optionally show current line and its counterpart one above the other

Compare: optionally show current line and its counterpart one above the other

In the bottom area of a compare view you will now find an optional vertically arranged single-line comparison for the currently selected line.

DeepGit Integration


Once configured in the Preferences, DeepGit can be easily invoked from the main window and the Log and will open up for the selected line from the Changes view.

What's New in SmartGit 8


The Journal is a log-like view with the focus on the current and one auxiliary branch.

The previous "Outgoing" view has been replaced by the more powerful "Journal" view, a distraction-free, log-like view showing the last commits of the current branch, its tracked branch and an optional auxiliary branch.

The Journal allows to focus on the work with the current branch without being distracted by unrelated commits or less important commit connections. Most branch-related commands, like Merge, Cherry-Pick and Reset, can be accessed from the context menu of the Journal. As most branch-related tasks in daily work require just one specific other branch, the Journal often reduces the need to open the Log.

For a broader view of the repository's history, the full-featured Log still is available.

Improved Dark-Theme Support

Ubuntu 16.04 with Vivacious-unity-zblackout-aqua dark theme.

If SmartGit detects a dark background color on its first start, it automatically configures the editors (Changes view, Compare, Conflict Solver, Index Editor) to use the new dark theme. Just as its light sibling it can be configured in the Preferences.

Spellchecker for Commit Messages

The spell-checker can use dictionary files that, e.g., are used by OpenOffice or LibreOffice.

The spell-checker will check the spelling of commit messages. SmartGit ships with a US-English dictionary, but you can configure different dictionaries to be used. SmartGit supports the same dictionary file format as OpenOffice or LibreOffice. If multiple dictionaries are configured, the best matching one will be used automatically.

Improved Branches view

The Branches view can be configured in more details.

The Branches view can be configured now in different ways. So, for example, multi-level branch names can be grouped by their levels.

Broken tracking is indicated in red. Tracking usually breaks after a Pull or Fetch if the local branch is tracking a remote branch that has been deleted by someone else.

Log: Open Submodule Log

For a changed submodule you can invoke the log for the submodule, too.

SmartGit now provides an easy way to invoke the Log on a (modified) submodule from the parent repository Log. You will have the choice of either opening the Log for the submodule entry ("gitlink") in the parent repository or opening the submodule root Log.

Push to Gerrit

For Git repositories with Gerrit remote, it became easier to push a branch to Gerrit.

Push To Gerrit provides a quick way to push your current branch <branch> to refs/for/<branch> on your Gerrit server. This operation will only be available if SmartGit has detected that one of your remotes is actually connected to Gerrit.

Sign Tags and Commits

To sign commits, you need to configure some repository or global options.

SmartGit allows to sign annotated tags or commits. The relevant options, e.g. for the GPG tool or the signing key, can be configured in the Repository Settings.

Compare: Apply Lines

In the Changes view you can quickly stage certain lines without having to use the Index Editor.

In the Changes view, Compare, Conflict Solver or Index Editor whole lines of changed blocks can now be quickly applied to the other side.

Relative Path Column

The Relative Path column shows the file name and directory in one column.

For those who prefer a tree-view presentation of the Files listing, we have added an alternative presentation by showing the file's directory in front of the file name.

File Log Performance Improvements

The performance of file logs has been significantly improved.

The core log code for File Logs has been rewritten from scratch and is significantly faster now for large repositories.

Many more...

For a complete list of all changes, please refer to the Change Log.

What's New in SmartGit 7.1

Support for HiDPI-Screens, e.g. 4k-Monitors

Clean and crisp display on high resolution monitors.

Instead of blurred or tiny fonts and images you now get a crisp display when using a HiDPI-screen like a 4k-monitor.

JIRA Integration

Select JIRA issues to use their subject as commit message, and mark issues as resolved on push.

When committing files, you may select open issues from Atlassian's JIRA and use it as commit message. When pushing commits, SmartGit will determine affected commits and offer to resolve them for a certain version in JIRA.

Support for Git-LFS

Processing of GIT-LFS-managed files

The status of GIT-LFS-managed files is showing up correctly now.

GitHub and BitBucket OAuth support


For GitHub and BitBucket, the OAuth web flow has been implemented: you won't have to give your passwords to SmartGit anymore but instead use access tokens which have a tailored set of permissions.

The GitHub repository credentials management has been simplified and based upon these access tokens, too.

Detection of Problematic Submodule Configurations

Notification to fix absolute paths of submodule repository locations.

If your submodules are configured to use absolute paths, it might be tricky to rename or move the repository to a new location. SmartGit can detect and fix this by changing the absolute to relative paths.

Change Order of Sync Command

Specify in what order the Sync command should perform the Push and Pull commands.

Often requested, now built-in: starting with SmartGit 7.1 you can define whether Sync should first push, then pull or first pull, then push.

Simplified Repository Group Organization

Intuitive way of grouping repositories.

You can organize repositories in groups since a couple of SmartGit versions. Usage is now more intuitive - right-click the repositories and select the target group (or create a new one).

Convenient Registration of Subscription Licenses

Simplified registering SmartGit for subscription licenses.

Up to SmartGit 7 is was necessary, when registering SmartGit, to always use the latest subscription license file. Now it's also possible to register an outdated license file of an uncancelled subscription and have SmartGit automatically fetch the latest file.

What's New in SmartGit 7

BitBucket and Atlassian Stash

Mercurial: the number of unpushed (draft) commits is shown.

BitBucket and Atlassian Stash are now supported with pull requests and comments, similar to GitHub.

GitLab Hosting Provider

GitLab - another hosting provider.

Easily clone your GitLab repositories. You may use your gitlab.com account or your private GitLab installation.

Outgoing: Move and Squash

Move and Squash: use to amend commits which are not the latest.

To amend not the latest commit, but a previous, unpushed one, create a new commit with the name and then drag-and-drop the new commit onto the commit to amend.

Changes View

Changes view with details why a file is considered binary and option to force text display

The Changes view now shows an information why SmartGit considers a file as binary. It's also possible to force the display as text.


The Mercurial integration has been rewritten to make use of the command server API, making operations more robust and faster.

Bookmark and Better Closed Branch Support

Mercurial: the number of unpushed (draft) commits is shown.

SmartGit 7 lets you create, delete, move and push bookmarks.

The Branches view shows bookmarks in a separate category with their containing branch behind. Closed branches are available in a separate category, too. Unpushed commits (those in draft state) are used to indicate outgoing commit count.

Show Changes to Compare 2 Files

Mercurial: compare two files with each other.

If you have two files selected and invoke Show Changes, you now have the ability to compare the files with each other (as already for Git).

What's New in SmartGit 6.5

External Tools are more powerful

External tools can also work on refs or commits.

External Tools can be configured to work on commits. Such tools will be available, both in the Branches view and in the Log Graph. There are new variables available to ask for a file or directory name and a customizable confirmation dialog can be optionally displayed before invoking a tool.

Log file/content filters

Log: optionally search commits for file names or file contents.

The Log provides two new filters: searching for touched file names and searching for modified file content in a commit. The responsiveness during filter execution has been improved.

Auto-update across major versions

SmartGit can update its installation.

SmartGit's auto-update mechanism now provides updating the installation source. This will allow you to easily upgrade to new major versions without requiring a new installation. You can also configure to keep your current installation up-to-date in the Preferences.

Mercurial: backout

Mercurial: backout (AKA reverse-merge) commits.

The Mercurial part of SmartGit now provides the backout command. This allows to "reverse-cherry-pick" commits.

Create/Apply Patch and other tools

Git format-patch and apply-patch have been added as external tool. Fast-Forward Merge allows you to quickly set a tracking branch to its tracked branch. Merge Directly To is a handy tool from Ram Rachum to quickly push changes to a branch, without checking out.

What's New in SmartGit 6

Completely Reworked Repository Management

SmartGit 6 with completely reworked repository management

SmartGit 6 simplifies the repository management by getting rid of "projects" and just knows about repositories. A repository has a name, can be marked as favorite and can be arranged in top-level groups. Each group is sorted by the repository or group names: favorite repositories before groups before non-favorite repositories.

SmartGit shows information about local changes, pushable commits (outgoing changes) and mergable commits (incoming changes) - even for closed repositories.

With drag-and-drop repositories quickly can be added or moved to other groups (by dropping on a group directly or a repository in the target group).

A double-click opens the repository (closing the previously opened one). To open all repositories in a group, right-click the group and select Open. To open multiple repositories, select them, right-click and select Open. To open a repository in a separate window, right-click and select Open in New Window. When closing SmartGit while repositories are open, these repositories will be reopened upon restart. Opening a new window either reopens the open repositories from a previously closed window or shows a list of recently-used repositories.

Common commands like Pull (Fetch), Log or external tools can be invoked on closed repositories. Log also works on bare repositories.

On the first start, common locations are scanned automatically for existing repositories. Additionally, specified directories can be searched recursively for existing repositories.

Background Fetch and Local Change Detection

SmartGit can detect and fetch remote changes

Favorite repositories can be automatically scanned in background (when idle) for local changes, quickly polled for remote changes, or remote changes can be fetched. This way you quickly get notified about which repository became modified locally or remotely.

Distributed Reviews


SmartGit 6 comes with a built-in code reviewing system (read more), which supports pull requests and comments, similar to GitHub.

This feature is a paid add-on on top of the commercial license.

Markdown Support

SmartGit 6 with markdown support for GitHub integration and SmartReview

Distributed Reviews and the GitHub integration provide support for markdown syntax (e.g. bold, italic styling, bullet lists).

Git-Flow Light

SmartGit 6 with a light-weight Git-Flow support

The standard Git-Flow model may be too heavyweight and inflexible for some projects. SmartGit 6 supports a light-weight Git-Flow which only makes use of feature branches.

Improved Submodule Handling

SmartGit 6 with simplified submodules handling

The Files view now also shows submodules, so it's not necessary anymore to resort to the Directories tree to invoke submodule operations. Still, submodules also show up in the Directories tree what helps to avoid the question whether an invoked operation should work on the submodule gitlink of the parent repository or on the submodule repository itself.

Improved Compare Behavior

SmartGit 6 can highlight modified or trailing whitespaces

The navigation to previous or next changes has been improved to show as much as possible from the changed blocks.

Trailing whitespaces and changes in whitespaces can be highlighted optionally. The current line can be highlighted in a different background color, optionally as well.

What's New in SmartGit 5

GitHub: Pull Requests and Comments


If you are using GitHub or have an own GitHub Enterprise instance, you can use Pull Requests and Comments features from inside SmartGit. Instead of leaving the responsibility to merge fixes or new features to all developers, they can send a Pull Request to the system integrator. The system integrator then will fetch the pull request commits, review them and either merge or reject the pull request.

comment feature

The Comments feature comes in handy, because it allows to add comments to lines of committed files, e.g. as feed-back to a pull request.

github configuration

SmartGit now supports 2-factor authentication to connect to the GitHub server and relies on API tokens instead of passwords. This improves security, because you have to share the GitHub account password with SmartGit only once, or you can even manually generate the token from the web-fronted. GitHub Enterprise instances are well-supported now and you can have multiple accounts, for github.com and for Enterprise instances at the same time.


issue-tracker link conversion

In contrast to SVN Git is lacking a standardized way to define how to detect issues in commit messages and convert them to links to your issue tracker. SmartGit goes ahead and supports configurations similar to SVN's bugtraq:* properties. More information you can find at github.com/mstrap/bugtraq.

Improved Log

unpushed commits with thin lines

The Log now allows to pull and push. To visually distinguish unpushed commits, they are shown with orange color and are connected to their parents with thin lines. Tracking branches show how many commits they are ahead (develop 2>) or behind (develop <4) their tracked branch.

Several commands — e.g. to move the head (checkout), reset current branch, move arbitrary refs, cherry-pick or rebase a commit range — now can be performed with drag-and-drop.

Blame (Mercurial)

mercurial blame

SmartGit  now also supports a powerful Blame for Mercurial with navigation in the line history.

Shelves (Mercurial)

mercurial shelve

Git has stashes and Mercurial has shelves. SmartGit now also adds support for Mercurial shelves, so you can save local changes quickly to get a clean repository and apply the changes again later.


commit message line length guide at 50 or 72 characters

For repositories with multiple remotes one now can select on what remote Git-Flow should operate (gitflow.origin).

For those who want to write perfect Git commit messages, SmartGit now optionally shows line length guides at 50/72 characters.

Different files might require different merge tools (e.g. for text or special binary files). As for file comparators, SmartGit now allows to configure different Conflict Solvers depending on the file name.

Sometimes it makes sense to ignore modified, but versioned files. Git allows to mark files with the assume-unchanged flag. SmartGit allows to toggle this flag and you can choose whether to show or hide these files.

What's New in SmartGit 4.6



Git-Flow is a high-level command set wrapping low-level Git commands to support a successful branching model. For the user it significantly reduces the necessary workflow steps and hence reduces the risk of incorrect command usage by less-experienced users.

SmartGit-URL Support

SmartGit supports an own URI: smartgit://cloneRepo/<URL>. This allows web applications like gitblit.org to easily trigger a clone in SmartGit.

Safe Forced Push


To reducing the risk of overwriting changes using a forced-push, a safety check is performed ensuring that the local 'remote' branch is identical with the one in the remote repository. In other words: the forced-push is rejected if someone else has pushed something to the same branch. You have to perform a fetch first (and get the other user's changes) to successfully perform a forced-push.

What's New in SmartGit 4.5

Syntax Coloring and Quick Line Staging


The built-in file editors (Compare, Conflict Solver and Index Editor) now support syntax coloring based on the file name. The colors and the filename-to-language mappings can be configured in the preferences.

SmartGit 4.5 makes staging (unstaging) hunks or inner-line changes even simpler and directly available in the Changes tool window.

External Tools

tools configuration tools menu

The existing file and directory tools have been unified. Tools now support own menu items, shortcuts and can be executed on selections of multiple files.

Automatic Update

auto-update notification

To reduce the steps necessary to use the latest version, SmartGit 4.5 supports auto-updating. If a new SmartGit version is released, SmartGit will download it in the background and use it when started the next time. No manual installation or administrative access rights are required.



The Blame has been improved in various areas: more compact information, display of subsequent and previous content of a single line, hyperlink navigation, better merge commit resolution and performance.

Stash on Demand

stash on-demand

If pulling or checking out a branch fails because of local modifications, the changes can be stashed away easily and applied again after the successful command execution.

Quicker Fetch


The Pull dialog now has a separate button to fetch only (without merging or rebasing).

What's New in SmartGit 4

Improved Mercurial Support

From the Mercurial Log commands now also can be invoked directly.

Support for following feature has been added: bookmarks, cherry-pick, rebase, phases and strip.

If you need credentials for accessing your http(s) repository, SmartGit can remember them for you.

Major commands have been added to the Log to execute them directly from there. The Log now also shows the history of renamed or moved files.

Interactive Rebase

Use drag-and-drop to reorder unpushed commits.

Before pushing, you can cleanup your commits visually (except of merge commits): reorder commits by using drag and drop, join adjacent commits or edit commit messages.

Branch-, Stash-, Remote-Handling Simplified

Double-click to switch branches, see pushable and mergable branches, invoke commands, edit remotes, ...

The new Branches tool window unifies a lot of functionality at one place. Simply switch branches by double-click, see pushable (red) and fetched (green) commits, push certains branches or tags, manage remotes or apply and drop stashes.

Full SVN-Property Support

SmartGit SVN loss-less merge.

SmartGit 4 provides full SVN-property support, so you can merge easily all changes. If you have cloned the SVN repository using a previous SmartGit version, you will see following warning:

Move to Trash

When deleting, optionally move to the trash.

When deleting files, you now can delete to the trash.