git-bug

git-bugGPL-3.0活跃维护

把 bug 跟踪直接嵌进 git 仓库,数据分布式存储、离线可用,不用依赖中心化平台就能提交和同步 issue。

Distributed, offline-first bug tracker integrated in git

v0.12.0发布于 2026-11-07 10:05 UTC10,851star +11 / 7 天347fork同步于 2026-11-10 05:29 UTC

怎么上手

README 里没有找到可直接复制的安装命令

README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。

硬件要求

README 没有说明硬件要求。

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

项目说明

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

最近发版

5 个版本v0.12.0
  1. v0.12.0最新正式版2026-11-07 · 2026-11-07 10:05 UTC

    Six weeks and about 90 commits after v0.11.0, git-bug v0.12.0 is available.

    This is a maintenance release. There is no big new feature to show off, but there are a lot of bug fixes, and among them a good number of problems that had been open for years. Some of them go back to 2020.

    Most of the work went into three places:

    • the cache, largely rebuilt: there is no more repository-wide lock, and it now follows changes made outside of git-bug
    • go-git, the git library git-bug uses, which needed many workarounds. If it has been getting in your way, git-bug can now use your git binary for push and pull.
    • the git configuration, now handled by gitconfig, a new Go library that reads and edits git configuration exactly as git does. It lives in its own repository, so other Go projects can use it too.

    Long-standing problems, resolved

    • #409 (2020): the cache of a hosted repository was not updated when someone pushed to it
    • #688 (2021): branch config: invalid merge, for example with a branch created by gh pr checkout
    • #940 (2022): git-bug did not load your SSH configuration
    • #1014 (2023): the repository you want to access is already locked
    • #1022 (2023): git-bug rewrote .git/config and dropped its comments
    • #1023 (2023): SSH did not work without an agent
    • #1075 (2023): git bug bug comment edit opened an empty editor instead of the current comment
    • #1129 (2023): text validation let invisible and control characters through
    • #1316 (2024): push and pull could not use different remotes
    • #1402, #1475 (2025): include and includeIf in the git configuration were not followed, so an identity configured that way was not found
    • #1416 (2025): authenticated HTTP(S) remotes did not work
    • #1474 (2025): the deprecated [section.subsection] syntax in a git config broke git-bug with an obscure error
    • #1485 (2025): knownhosts: illegal base64 data on push or pull
    • #1556: git bug termui held a lock, and blocked every other git-bug command while it was running
    • #1589: a repository receiving a push only showed the changes once a git-bug command ran in it

    The cache, rebuilt

    The cache sits between the entities stored in git and everything else: the CLI, the terminal UI, the web UI, the bridges. It used to make two assumptions: that the process holding it is the only one touching the repository, and that nothing changes behind its back. Neither was true, and a lot of the bugs above came from there.

    Two git-bug processes sharing one repository

    The command commits its change to git atomically, and updates that bug in the shared index. The web UI process notices the change in git, whether it comes from another git-bug process or from a git push. It reads what's already up to date from the index, rebuilds only what isn't and writes it back, and tells the browser through a GraphQL subscription.

    Both assumptions are gone:

    • no more repository-wide lock. Any number of git-bug processes can work on the same repository at the same time, safely. You can keep the web UI or the terminal UI open while using the CLI, or while an agent does (#1014, #1556).
    • changes made outside are followed. The web UI and the terminal UI see a git push into the repository, a pull, or another git-bug command, and show it shortly after (#409, #1589). They watch the filesystem where the operating system supports it, poll where it doesn't (network filesystems, for instance), and also compare every ref once a minute, as a backstop for anything those missed. git-bug.changes.notifier lets you choose, or turn it all off.
    • incremental repair. The cache records which commit each entity's derived data was built from, so on startup or on a change it rebuilds exactly what is out of date,
  2. v0.11.00.11.02026-09-22 · 2026-09-22 15:14 UTC
    查看更新说明

    Sixteen months and close to 300 commits after v0.10.1, git-bug v0.11.0 is available.

    This release is about two things. The obvious one is a new web UI, rewritten from scratch and far more capable than the one it replaces. The less obvious one is a deep pass on correctness, which closes a handful of long standing bugs.

    A new and more powerful web UI

    The old web UI could show you issues. The new one is meant to be the way you actually work with them.

    You can browse, search, filter and paginate issues, open new ones, comment, edit comments, retitle, change labels and status, and look at a user's profile and their issues. Filters live in the URL, so any view you are looking at is a link you can send to someone. There are four themes — light and dark, each in a soft and a hard variant — and if you serve several repositories, a picker to move between them.

    The longer term goal is a web UI you can expose publicly: a portal where anyone hitting a problem with your project can read the issues and file one, without installing git-bug and without an account on someone else's platform. That needs external authentication, which is not here yet. What is here is an interface that is finally good enough to put in front of people, and that is the harder half.

    A code browser

    The web UI now doubles as a code browser for the repository it serves: a file tree, syntax-highlighted files with linkable line ranges, rendered markdown with relative links and images resolved against the repo, commit history scoped to a file or a directory, commit details with collapsible diffs, and a branch and tag selector.

    This is not just a frontend feature. The backend learned to browse the repository — refs, trees, blobs, commit history, diffs — and all of it is exposed over the same GraphQL API, plus an HTTP endpoint serving raw file content. Anything the UI can show you, your own tooling can query.

    ‎

    This opens the ways for more powerful features like code review, as well as exposing the webui publicly to accept external contribution.

    Correctness

    The other half of this release is much less visible and, arguably, more important.

    The cache sits between the stored entities and everything else, and it had a number of subtle problems: races when one entity resolved another, a commit path that was not atomic, stale or incomplete operation metadata, an index not updated on merge, and labels shared between two representations of the same bug. Individually they are small. Together they meant that under the right sequence of operations, git-bug could hand you data that did not match what was stored.

    Two of them had user-visible consequences that had been reported and never explained:

    • #1582 — pushing to GitHub and pulling back duplicated every comment. Bugs deduplicated correctly, comments did not, because the metadata written during the export was not fully visible on the next read.
    • #1003 — git bug user could not adopt an identity, because the cache demanded a user identity long before it actually needed one.

    Forward compatibility

    git-bug now keeps unknown operations instead of dropping them. If a newer version — or another implementation — writes an operation type this binary does not understand, the raw data is preserved and written back untouched.

    Previously, reading and re-writing a bug with an older binary would quiet

  3. v0.10.12025-05-19 · 2025-05-19 05:15 UTC
    查看更新说明

    To view the full set of changes, including internal developer-centric changes, run the following command:

    git log --oneline v0.10.0..v0.10.1
    

    Bug fixes

    • cli: ignore missing sections when removing configuration by @sudoforge in #1455
  4. v0.10.02025-05-18 · 2025-05-18 21:31 UTC
    查看更新说明

    To view the full set of changes, including internal developer-centric changes, run the following command:

    git log --oneline v0.9.0..v0.10.0
    

    Documentation

    • bridge: correct command used to create a new bridge by @mxt-mischa in #1422

    Features

    • web: simplify header navigation by @lygaret in #1427
    • web: remark upgrade + gfm + syntax highlighting by @lygaret in #1444
  5. v0.9.02025-05-12 · 2025-05-12 06:16 UTC
    查看更新说明

    This release contains minor improvements and bug fixes.

    The full changelog can be seen by running the following command:

    git log --oneline v0.8.1..v0.9.0
    

    :rocket: Features

    • tui: improve readability of the help bar (23be684a05ff)

    :honeybee: Bug Fixes

    • remove errata from string literal (aa102c91f675)

    :pencil: Documentation

    • dev-infra: define stricter commit message guidelines (f680ef74a500)
    • correct mispelled words (89ff47a4ee5c)
    • clarify testing activation of the dev shell (d753637e3523)

    :wrench: Miscellaneous

    • dev-infra: improve //:.editorconfig alignment with formatters (b4ad53215014)
    • dev-infra: add gopls to the development shell (29b59f2a3888)
    • use pkgs.runCommand for the pinact check drv (65f8ec981abe)
    • remove workflow: lifecycle (f3bb756e303e)
    • automatically mirror HEAD to trunk (22574726cdf5)
    • mark TestCache as flaky (3e5f4ee70cf9)
    • add support for Helper() (1ec304e638c1)
    • implement support for Failed() and FailedNow() (1766f85bf9ed)
    • add an internal lib for running flaky tests (f6e7fb524e3e)
    • simplify github-related variables (dac71e738c94)

用户点评

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

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

    README 原文

    未翻译

    git-bug

    Build Status Backers on Open Collective Sponsors on Open Collective GPL v3 License GoDoc Matrix

    Issues - Documentation - Discussions

    git-bug is a bug tracker that:

    • is fully integrated in git: you only need your git repository to have a bug tracker
    • is distributed: use your normal git remote to collaborate, push and pull your bugs!
    • works offline: in a plane or under the sea? Keep reading and writing bugs!
    • prevents vendor lock-in: your usual service is down or went bad? You already have a full backup.
    • is fast: listing bugs or opening them is a matter of milliseconds
    • doesn't pollute your project: no files are added in your project
    • integrates with your tooling: use the UI you like (CLI, terminal, web) or integrate with your existing tools through the CLI or the GraphQL API
    • bridges to other bug trackers: use bridges to import and export to other trackers.

    Installation

    See INSTALLATION.md for the complete guide, including how to build from source and verify your install.

    Workflows

    There are multiple ways to use git-bug. See the workflow documentation for the details.

    This is the pure git-bug experience. In a similar fashion as with code, use git bug push and git bug pull to push and pull your bugs between git remotes and collaborate with your teammate.

    As git-bug has bridges with other bug-trackers, you can use it as your personal local remote interface. Sync with git bug bridge pull and git bug bridge push, work from your terminal, integrate into your editor, it's up to you. And it works offline!

    Often, projects need to have their bug-tracker public and accept editions from anyone facing a problem. To support this workflow, git-bug aims to have the web UI accept external OAuth authentication and act as a public portal. However the web UI is not up to speed for that yet. Contributions are very much welcome!

    CLI usage

    Create a new identity:

    git bug user new
    

    Create a new bug:

    git bug add
    

    Your favorite editor will open to write a title and a message.

    You can push your new entry to a remote:

    git bug push [<remote>]
    

    And pull for updates:

    git bug pull [<remote>]
    

    List existing bugs:

    git bug ls
    

    Filter and sort bugs using a query:

    git bug ls "status:open sort:edit"
    

    Search for bugs by text content:

    git bug ls "foo bar" baz
    

    You can now use commands like show, comment, open or close to display and modify bugs. For more details about each command, you can run git bug <command> --help or read the command's documentation.

    Interactive terminal UI

    An interactive terminal UI is available using the command git bug termui to browse and edit bugs.

    Termui recording

    Web UI

    You can launch a rich Web UI with git bug webui. Browse, search and filter issues, open new ones, comment, and edit titles, labels and status. It also doubles as a code browser for your repository, with a file tree, syntax-highlighted files, commit history and diffs.

    The web UI is packed inside the same go binary and served by a local http server. It talks to the backend through a GraphQL API, whose schema is available here.

    Bridges

    git-bug can import from and export to Github, Gitlab, Jira and Launchpad. See the feature matrix for what each bridge supports, and the bridge documentation for the full guide.

    Interactively configure a new bridge:

    git bug bridge new
    

    Or manually:

    git bug bridge new \
        --name=<bridge> \
        --target=github \
        --url=https://github.com/git-bug/git-bug \
        --login=<login> \
        --token=<token>
    

    Import bugs:

    git bug bridge pull [<name>]
    

    Export modifications:

    git bug bridge push [<name>]
    

    Delete a bridge:

    git bug bridge rm [<name>]
    

    Internals

    Interested in how it works? Have a look at the data model and the internal bird-view.

    The on-disk format is formally specified in the git-bug spec, covering the DAG entity format, identities and the bug entity. Read that if you want to write another implementation or a tool that reads git-bug data directly.

    Or maybe you want to make your own distributed data-structure in git?

    See also all the docs.

    Misc

    Planned features

    The feature matrix gives a good overview of what is planned, without being exhaustive.

    Additional planned features:

    • webUI that can be used as a public portal to accept user's input
    • inflatable raptor

    Contribute

    PRs accepted. Drop by the Matrix room for a chat, look at the feature matrix or browse the issues and discussions to see what is worked on or discussed.

    See CONTRIBUTING.md to get a development environment going, build the project and run the tests. To work on the web UI, have a look at its dedicated README.

    Contributors :heart:

    This project exists thanks to all the people who contribute.

    Backers & sponsors

    Thank you to all our backers and sponsors! 🙏 [Become a backer or sponsor]

    License

    Unless otherwise stated, this project is released under the GPLv3 or later license © Michael Muré.

    The git-bug logo by Viktor Teplov is released under the Creative Commons Attribution 4.0 International (CC BY 4.0) license © Viktor Teplov.