SourceGit - Opensource Git GUI client.

Screenshots
Highlights
- Supports Windows/macOS/Linux
- Opensource/Free
- Fast
- Deutsch/English/Español/Bahasa Indonesia/Français/Italiano/Português/Русский/Українська/简体中文/繁體中文/日本語/தமிழ் (Tamil)/한국어
- Built-in light/dark themes
- Customize theme
- Visual commit graph
- Supports SSH access with each remote
- GIT commands with GUI
- Clone/Fetch/Pull/Push...
- Merge/Rebase/Reset/Revert/Cherry-pick...
- Amend/Reword/Squash
- Interactive rebase
- Branches
- Remotes
- Tags
- Stashes
- Submodules
- Worktrees
- Archive
- Diff
- Save as patch/apply
- File histories
- Blame
- Revision Diffs
- Branch Diff
- Image Diff - Side-By-Side/Swipe/Blend
- Git command logs
- Search commits
- GitFlow
- Git LFS
- Bisect
- Issue Link
- Workspace
- Custom Action
- Create PR on GitHub/Gitlab/Gitea/Gitee/Bitbucket...
- Using AI to generate commit message
- Built-in conventional commit message helper.
[!WARNING]
Linux only tested on Debian 12 on both X11 & Wayland.
How to Use
To use this tool, you need to install Git(>=2.25.1) first.
You can download the latest stable from Releases or download workflow artifacts from GitHub Actions to try this app based on latest commits.
This software creates a folder, which is platform-dependent, to store user settings, downloaded avatars and crash logs.
| OS | PATH |
|---|
| Windows | %APPDATA%\SourceGit |
| Linux | ${XDG_CONFIG_HOME}/SourceGit (preference.json) ${XDG_CACHE_HOME}/SourceGit (avatars & logs) |
| macOS | ~/Library/Application Support/SourceGit |
[!TIP]
- You can open this data storage directory from the main menu
Open Data Storage Directory.
- You can create a
data folder next to the SourceGit executable to force this app to store data (user settings, downloaded avatars and crash logs) into it (Portable-Mode). Only works with Windows packages and Linux AppImages.
For Windows users:
[!NOTE]
git-flow is no longer shipped with Git for Windows since 2.51.1. You can use it by following these steps:
- Download git-flow-next
- Unzip & Rename the
git-flow-next to git-flow
- Copy to
$GIT_INSTALL_DIR/cmd or just add its path to you PATH directly
For macOS users:
[!NOTE]
macOS packages in the Release page of this project are all unsigned. If you are worried about potential security issues with the above command, you can download the signed package from the distribution repository provided by @ybeapps (there is no need to execute the above command while installing SourceGit).
- Make sure git-credential-manager is installed on your mac.
- You can run
echo $PATH > ~/Library/Application\ Support/SourceGit/PATH to generate a custom PATH env file to introduce PATH env to SourceGit.
For Linux users:
-
Thanks @aikawayataro for providing rpm and deb repositories, hosted on Codeberg.
deb how to:
sudo mkdir -p /etc/apt/keyrings
curl https://codeberg.org/api/packages/yataro/debian/repository.key | sudo tee /etc/apt/keyrings/sourcegit.asc
echo "deb [signed-by=/etc/apt/keyrings/sourcegit.asc, arch=amd64,arm64] https://codeberg.org/api/packages/yataro/debian generic main" | sudo tee /etc/apt/sources.list.d/sourcegit.list
sudo apt update
sudo apt install sourcegit
rpm how to:
curl https://codeberg.org/api/packages/yataro/rpm.repo | sed -e 's/gpgcheck=1/gpgcheck=0/' > sourcegit.repo
# Fedora 41 and newer
sudo dnf config-manager addrepo --from-repofile=./sourcegit.repo
# Fedora 40 and earlier
sudo dnf config-manager --add-repo ./sourcegit.repo
sudo dnf install sourcegit
If your distribution isn't using dnf, please refer to the documentation of your distribution on how to add an rpm repository.
-
AOSC OS: In addition to AMD64 and ARM64, support for LoongArch and RISC-V has been added.
sudo oma install sourcegit
[!NOTE]
RISC-V support is untested.
Commandline arguments
Users can also launcher SourceGit from commandline. Usage:
<SOURCEGIT_EXEC> <DIR> // Open repository in existing `SourceGit` instance or a new one
<SOURCEGIT_EXEC> --history <FILE_OR_DIR> // Launch `SourceGit` to see the history of a file or dir
<SOURCEGIT_EXEC> --blame <FILE_PATH> // Launch `SourceGit` to blame a file (HEAD version only)
OpenAI
This software supports using OpenAI or other AI service that has an OpenAI compatible HTTP API to generate commit message. You need configurate the service in Preference window.
For OpenAI:
Server must be https://api.openai.com/v1
For OrcaRouter:
Server should be https://api.orcarouter.ai/v1
API Key should be an OrcaRouter API key (prefixed with sk-orca-)
- A good starting
Model is orcarouter/auto, which routes each request to the best available model
For Cheaper Inference:
Server should be https://api.cheaperinference.com/v1
API Key should be a Cheaper Inference API key (prefixed with ci_live_)
- A good starting
Model is gpt-5.4-mini
For Opper:
Server should be https://api.opper.ai/v3/compat
API Key should be an Opper API key, created at https://platform.opper.ai
- A good starting
Model is gpt-5.4-mini
For API Route:
Server should be https://global.api-route.com/v1
API Key should be your API Route API key
Model can be gpt-6.1-sol if it is available to your key; otherwise select an available chat model from the fetched catalog
- See the API documentation for authentication and model discovery
For other AI service:
- The
Server should fill in a URL equivalent to OpenAI's https://api.openai.com/v1. For example, when using Ollama, it should be http://localhost:11434/v1 instead of http://localhost:11434/api/generate
- The
API Key is optional that depends on the service
External Tools
This app supports open repository in external tools listed in the table below.
| Tool | Windows | macOS | Linux |
|---|
| Visual Studio Code | YES | YES | YES |
| Visual Studio Code - Insiders | YES | YES | YES |
| VSCodium | YES | YES | YES |
| Cursor | YES | YES | YES |
| Sublime Text | YES | YES | YES |
| Zed | YES | YES | YES |
| Visual Studio | YES | NO | NO |
[!NOTE]
This app will try to find those tools based on some pre-defined or expected locations automatically. If you are using one portable version of these tools, it will not be detected by this app.
To solve this problem you can add a file named external_editors.json in app data storage directory (config dir for Linux) and provide the path directly.
User can also exclude some editors by using external_editors.json.
The format of external_editors.json:
{
"tools": {
"Visual Studio Code": "D:\\VSCode\\Code.exe"
},
"excludes": [
"Visual Studio Community 2019"
]
}
[!NOTE]
This app also supports a lot of JetBrains IDEs, installing JetBrains Toolbox will help this app to find them.
Conventional Commit Helper
You can define your own conventional commit types (per-repository) by following steps:
- Create a json file with your own conventional commit type definitions. For example:
[
{
"Name": "New Feature",
"Type": "Feature",
"Description": "Adding a new feature",
"PrefillShortDesc": "this is a test"
},
{
"Name": "Bug Fixes",
"Type": "Fix",
"Description": "Fixing a bug"
}
]
- Configure the
Conventional Commit Types in repository configuration window.
Contributing
Everyone is welcome to submit a PR. Please make sure your PR is based on the latest develop branch and the target branch of PR is develop.
This project has a submodule in depends/AvaloniaEdit which is a custom fork of Official AvaloniaEdit.
Please make sure it is initialized - enable --recurse-submodules option while cloning or run git submodule update --init after cloned.
In short, here are the commands to get started once .NET tools are installed:
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
dotnet restore
dotnet build
dotnet run --project src/SourceGit.csproj
Thanks to all the people who contribute.

Translation Status
You can find the current translation status in TRANSLATION.md
Translate Utility Script
A script that assists with translations by reading the target language, comparing it with the base language, and going through missing keys one by one, so the translator can provide the translations interactively without needing to check each key manually.
Usage
Check for a given language (e.g., pt_BR) and optionally check for missing translations:
python translate_helper.py pt_BR [--check]
pt_BR is the target language code (change as needed), it should correspond to a file named pt_BR.axaml in the src/Resources/Locales/ directory, so you can replace it with any other language code you want to translate, e.g., de_DE, es_ES, etc.
--check is an optional flag used to only check for missing keys without prompting for translations, useful for getting a list of missing translations.
The script will read the base language file (en_US.axaml) and the target language file (e.g., pt_BR.axaml), identify missing keys, and prompt you to provide translations for those keys. If the --check flag is used, it will only list the missing keys without prompting for translations.
Third-Party Components
For detailed license information, see THIRD-PARTY-LICENSES.md.