sourcegit

sourcegit-scmMIT活跃维护

跨平台的 Git 图形客户端,支持 Windows、macOS 和 Linux,让不习惯命令行的开发者也能直观地完成提交、分支、合并等版本控制操作。

Windows/macOS/Linux GUI client for GIT users

v2026.24发布于 2026-11-09 02:37 UTC6,432star +30 / 7 天600fork同步于 2026-11-10 05:33 UTC

怎么上手

从 README 代码块原样提取,可能是其中一种安装方式
brew install --cask sourcegit
curl https://codeberg.org/api/packages/yataro/debian/repository.key | sudo tee /etc/apt/keyrings/sourcegit.asc
curl https://codeberg.org/api/packages/yataro/rpm.repo | sed -e 's/gpgcheck=1/gpgcheck=0/' > sourcegit.repo
硬件要求

README 没有说明硬件要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v2026.24
  1. v2026.242026.24最新正式版2026-11-09 · 2026-11-09 02:37 UTC

    [!NOTE] Hi everyone,

    I am actively communicating with developers who are interested in taking over this project. Since there is more than one candidate, I need to send individual follow-ups, and some replies may be delayed (I need to finish communicating with the previous person first). The release time of the next version will be decided by the new maintainer once they are confirmed. Please be patient.

    What's Changed

    • localization: update Traditional Chinese translations by @JC-Chung in https://github.com/sourcegit-scm/sourcegit/pull/2812
    • localization: update Spanish translation by @jjesus-dev in https://github.com/sourcegit-scm/sourcegit/pull/2827
    • fix: push branches by full refname so a tag with the same name does not make them ambiguous by @mirfalltnixein in https://github.com/sourcegit-scm/sourcegit/pull/2826
    • fix: wrong header for copy full path in unstaged folder context menu by @weiningwei in https://github.com/sourcegit-scm/sourcegit/pull/2795
    • localization: update Russian translate by @AquariusStar in https://github.com/sourcegit-scm/sourcegit/pull/2844
    • fix: commit message not loaded after cherry-pick/revert with --no-commit by @JC-Chung in https://github.com/sourcegit-scm/sourcegit/pull/2858
    • fix: handle canceled command log updates during shutdown by @gadfly3173
    • Add hotkey to copy selected branch name
    • Support to delete attached worktree while deleting a single branch
    • BREAKING CHANGE: Support to store API to system keychain. Users need re-configure the API key for existed AI services.
      • On Windows, it will be stored in Windows Credential Manager
      • On macOS, it will be stored in macOS Keychain
      • On Linux, this feature requires secret-tool installed
    • Fix the issue that sometimes the repository's left sidebar layout did not update
    • When a patch is generated by git format-patch or from a mailbox, allows to commit changes while applying it
    • Add a new in-progress state notification for git am command
    • Add a new Focus on Current Branch toggle button in toolbar. When it is enabled, only commits belongs to the current branch or its upstream (if it has one) will be listed in Dashboard page. Users do not need to set history filters manually.
    • Fix the issue that when the active branch has no upstream, the local changes count of this repository is wrong in welcome page.
    • Fix the issue that sometimes copying text will crash this app
    • Show only one side of diff when file is totally added or removed
    • Fix the issue that wrong image path passed to command to get the diff of a staged+renamed image file.
    • Several other UI/UX changes.

    New Contributors

    Full Changelog: https://github.com/sourcegit-scm/sourcegit/compare/v2026.23...v2026.24

  2. v2026.232026.232026-10-26 · 2026-10-26 03:50 UTC
    查看更新说明

    What's Changed

    New Contributors

    Full Changelog: https://github.com/sourcegit-scm/sourcegit/compare/v2026.22...v2026.23

  3. v2026.222026.222026-10-12 · 2026-10-12 02:10 UTC
    查看更新说明

    What's Changed

    New Contributors

    Full Changelog: https://github.com/sourcegit-scm/sourcegit/compare/v2026.21...v2026.22

  4. v2026.212026.212026-09-21 · 2026-09-21 02:07 UTC
    查看更新说明

    What's Changed

    • docs: document OrcaRouter as an OpenAI-compatible service by @putraperdana1207-pixel in https://github.com/sourcegit-scm/sourcegit/pull/2658
    • Allow Cherry Picking on Merged commit (#2725) by @clintonleroux in https://github.com/sourcegit-scm/sourcegit/pull/2726
    • fix: Exec property in flatpak desktop file now points to correct executable by @flexxxxer in https://github.com/sourcegit-scm/sourcegit/pull/2732
    • fix: hide console window when launching external tools by @weiningwei in https://github.com/sourcegit-scm/sourcegit/pull/2731
    • Auto select the next change after discarding one.
    • Hide the --tags option in Push popup only when the branch.<selected_local_branch>.pushRemote is a remote that has not been added to current repository. For example: when this branch is created by gh pr checkout <PR> command.
    • Fix the issue that prune remote does not work with configured ssh key
    • Fix the issue that remote name with uppercase letters is forced to lowercase
    • Fix the issue that failed to generate SSH key when ~/.ssh dir does not exist
    • Add a toggle button to hide/show repository sidebar (branches/remotes/...) in local changes view.
    • Fix the issue that sometimes keybindings with diff viewer does not work correctly.
    • Several other UI/UX changes.

    New Contributors

    Full Changelog: https://github.com/sourcegit-scm/sourcegit/compare/v2026.20...v2026.21

  5. v2026.202026.202026-09-14 · 2026-09-14 02:34 UTC
    查看更新说明

    What's Changed

    • enhance: extract reusable CopyButton control with copy feedback by @JC-Chung in https://github.com/sourcegit-scm/sourcegit/pull/2668
    • localization: update Spanish translation by @jjesus-dev in https://github.com/sourcegit-scm/sourcegit/pull/2671
    • ux: add tooltip to copy button in Launcher notification by @weiningwei in https://github.com/sourcegit-scm/sourcegit/pull/2666
    • localization: update Russian translate by @AquariusStar in https://github.com/sourcegit-scm/sourcegit/pull/2676
    • localization: update Russian translate by @AquariusStar in https://github.com/sourcegit-scm/sourcegit/pull/2677
    • Bug Fix: keep local changes commit controls visible on short windows by @w0lflow in https://github.com/sourcegit-scm/sourcegit/pull/2690
    • localization: update Spanish translation by @jjesus-dev in https://github.com/sourcegit-scm/sourcegit/pull/2694
    • localization: update Traditional Chinese translations by @JC-Chung in https://github.com/sourcegit-scm/sourcegit/pull/2683
    • localization: update Spanish translation by @jjesus-dev in https://github.com/sourcegit-scm/sourcegit/pull/2695
    • fix: size working copy pane for commit push action by @w0lflow in https://github.com/sourcegit-scm/sourcegit/pull/2696
    • localization: update Japanese translation by @rlbxku1r in https://github.com/sourcegit-scm/sourcegit/pull/2702
    • ux: enable +tnum font feature for stash time by @JC-Chung in https://github.com/sourcegit-scm/sourcegit/pull/2705
    • Fix the issue that suggestion box in commit message editor and file search box does not hide after switching to another page.
    • Rewrite the change selection.
    • Rewrite the way to calculate the navigation block index after staging/unstaging/discarding a hunk in a file.
    • Add a new option Auto (Based-on Default Clone Dir) to auto-create groups for added repository while cloning/opening.
    • Fix the issue that setsid was built for arm64 CPU architecture in macOS (Intel) package
    • Fix the issue that wrong result in unstaged with staged binary diff.
    • Fix the issue that app crash due to VisualLinesInvalidException exception raised by AvaloinaEdit
    • Support git's branch.<name>.pushRemote configuration to push branch to another repository which is usefull when this branch is created by gh pr checkout <PR> command
    • Support to change the remote's push URL by context menu of selected remote.
    • Re-design the repository's page.
    • Move some subpage-related button from sidebar to its own page
      • Move More Options... button for HISTORY page from sidebar to HISTORY page
      • Move Discard all changes button to LOCAL CHANGES page
      • Move Clear stashes button to STASHES page.
    • Rewrite navigating commit in Blame window
      • Holding Ctrl (on Windows/Linux) or ⌘ (on macOS) when clicking commit SHA will rebuild the blame data
      • Clicking commit SHA directly will only navigate to that commit in repository's HISTORY page
      • Both will also highlights the content that comes from it
    • Fix the issue that wrong blame data when the first line of file is an empty line
    • Fix the issue that wrong submodule revision info when the revision does not exist in that repo any more (maybe after a force-pushing)
    • Upgrade AvaloniaUI to 11.3.22
    • Support to select .diff files as patches.
    • Use a single git status command to query repository's status in Welcome page
    • Several other UI/UX changes.

    New Contributors

    Full Changelog: https://github.com/sourcegit-scm/sourcegit/compare/v2026.19...v2026.20

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    SourceGit - Opensource Git GUI client.

    stars forks license latest downloads

    Screenshots

    • Dark Theme

      Theme Dark

    • Light Theme

      Theme Light

    • Custom

      You can find custom themes from sourcegit-theme. And welcome to share your own themes.

    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.

    OSPATH
    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:

    • MSYS Git is NOT supported. Please use official Git for Windows instead.
    • You can install the latest stable by scoop with follow commands:
      scoop bucket add extras
      scoop install sourcegit
      
    • Pre-built binaries can be found in Releases

    [!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:

    • Thanks @ybeapps for making SourceGit available on Homebrew:
      brew install --cask sourcegit
      
    • If you want to install SourceGit.app from GitHub Release manually, you need run following command to make sure it works:
      sudo xattr -cr /Applications/SourceGit.app
      

    [!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.

    ToolWindowsmacOSLinux
    Visual Studio CodeYESYESYES
    Visual Studio Code - InsidersYESYESYES
    VSCodiumYESYESYES
    CursorYESYESYES
    Sublime TextYESYESYES
    ZedYESYESYES
    Visual StudioYESNONO

    [!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:

    1. 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"
      }
    ]
    
    1. 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.

    Contributors

    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.