gitbutlerapp/gitbutler

开发工具

一个同时提供图形界面和命令行的 Git 客户端,用堆叠分支和并行分支替掉手动 rebase,适合同时推进多个改动的开发者。

21,851
1,035
Rust
NOASSERTION
创建于 3 年前

如果你每天大量时间花在切分支、暂存和手工 rebase 上,并且希望桌面应用和命令行共用同一套引擎,这个项目值得试。它仍然读写普通的 Git 仓库,不需要把项目迁移到新的托管平台。

解决什么问题

你本来在做一项任务,忽然发现还需要改另一处,于是开始 stash、切分支,或者准备一个交互式 rebase。代码评审的反馈回来之后,又要修改一个已被后续提交依赖的 commit,接着就是一连串冲突处理才能推送。GitButler 把这项工作挪到了别处:你在侧边栏里把改动整理成不同分支,直接编辑或移动提交,工具会自动重排依赖它的后续工作。结果是,拆分分支和整理提交从一次完整的 rebase 会话变成几次点击或几条 but 命令。

有什么不同

核心机制是并行分支。它不是只有一个工作区,而是允许你同时保留多个分支上的改动,从而省掉大部分切分支和 stash 的来回。堆叠分支则是一个分支建立在另一个分支之上,修改下层 commit 会自动触发上层重排。冲突被当作一种正常状态:按文档说法,rebase 总是能完成,提交可以被标记为冲突并留到之后任意顺序解决,而不是卡住整个操作。

这让它不只是一个更好看的 git status,而是把工作整理成历史之前的一种不同组织方式。拖动提交或用命令行命令即可完成取消提交、改提交信息、amend、移动、拆分和压缩,不需要交互式 rebase。撤销时间线会记录操作,可以在图形界面里撤销或回退,也可以在命令行的操作日志里查看。代价也很明确:你要接受 GitButler 的分支模型和术语,仍用原生 Git 的队友不会看到同样的心智图景;习惯直接操作索引的人也需要重新找到对应动作的位置。

代码托管集成内置支持 GitHub、GitLab 和 Bitbucket,可以直接打开和更新 Pull Request、查看 CI 状态,不必再装别的工具。AI 功能是可选的辅助,用于生成提交信息、分支名和 PR 描述,还提供可安装的 hooks 或 skills 给各种 agent 系统,因此不会改变底层 Git 数据。README 说明命令行和图形界面共用同一个 Rust 后端,这对希望在终端和桌面得到一致行为的人很重要。

谁值得试

适合经常在同一个仓库里同时维护两三个相关改动、并希望在评审前拆分、重排或修改提交,但不想背 rebase 命令的人。也适合想在同一个客户端里完成本地分支操作和 GitHub/GitLab Pull Request 的人。不适合要求所有成员只用标准 Git 命令、且操作方式必须完全一致的团队,因为仓库本身仍是 Git,但分支模型是 GitButler 自己的。工作流基本是单分支、提交后推送的人,加上这一层整理并不会得到多少收益。

使用条件与边界

图形界面需要安装桌面应用,下载入口在项目的下载页;偏好终端则使用 but 命令行。两者都作用于已有的 Git 仓库,项目把它描述为可直接替换的界面,而不是新的仓库格式。具体配置在项目文档中,实际准备成本主要是先读懂分支和冲突模型,再去整理真实工作。

日常维护主要集中在分支模型和托管平台连接上。代码托管集成需要登录 GitHub、GitLab 或 Bitbucket,AI 辅助是可选功能,正常使用并不依赖它。撤销时间线会记录操作以便回退,但这是工作流辅助,不能替代你在把分支分享给协作者之前理解重排结果。许可证是 Fair Source,限制用它构建竞品,两年后转为 MIT,如果打算再分发或嵌入代码,需要留意这一点。

HotRepo 点评

HotRepo 唯一有日期的观测是 2026-10-25:该项目当天出现在每日榜单上,有 21,849 颗星,当日增加 8 颗;仅凭这一次快照,无法判断关注度是在上升、下降还是持续。更有用的问题是,堆叠分支和并行分支的方式是否贴合你现有的工作习惯。做决定前可先读分支管理文档和冲突行为说明,并确认命令行与你团队对 Git 的预期一致。

Hacker News 讨论

The GitButler version control client backed by Git, powered by Tauri/Rust/Svelte
▲ 23 · 1 条评论 · 2024年2月7日

本文由 AI 根据项目 README 生成,更新于 2026年10月25日,以项目官方文档为准。