322 lines
7.6 KiB
Plaintext
Executable File
322 lines
7.6 KiB
Plaintext
Executable File
# GitButler 完全研究
|
||
|
||
> Git 的现代替代品:堆叠分支 + AI 集成 + 无限撤销
|
||
>
|
||
> 归档:2026-04-25
|
||
|
||
---
|
||
|
||
## 📊 项目概览
|
||
|
||
| 属性 | 值 |
|
||
|------|------|
|
||
| **仓库** | gitbutlerapp/gitbutler |
|
||
| **Stars** | 20,643 |
|
||
| **语言** | Rust (后端) + Svelte/TypeScript (前端) |
|
||
| **框架** | Tauri |
|
||
| **创建** | 2023-01-31 |
|
||
| **许可** | Fair Source(2 年后转 MIT) |
|
||
| **下载** | gitbutler.com/downloads |
|
||
|
||
---
|
||
|
||
## 🎯 核心定位
|
||
|
||
```
|
||
GitButler = Git 的现代 GUI + CLI 替代品
|
||
↓
|
||
底层依然是 Git
|
||
↓
|
||
但体验更简单、更强大
|
||
```
|
||
|
||
**一句话**:在现有 Git 仓库上直接运行,提供更友好、更强大的版本控制体验。
|
||
|
||
---
|
||
|
||
## 🏗️ 技术架构
|
||
|
||
```
|
||
┌──────────────────────────────────┐
|
||
│ 用户界面 │
|
||
│ ┌──────────┐ ┌──────────────┐ │
|
||
│ │ GUI │ │ CLI │ │
|
||
│ │ (Svelte) │ │ (but) │ │
|
||
│ └────┬─────┘ └──────┬───────┘ │
|
||
└───────┼───────────────┼──────────┘
|
||
│ │
|
||
┌───────┴───────────────┴──────────┐
|
||
│ Rust 后端引擎 │
|
||
│ (版本控制逻辑 + Git 操作) │
|
||
└───────────────┬──────────────────┘
|
||
│
|
||
┌───────────────┴──────────────────┐
|
||
│ Git │
|
||
│ (底层存储) │
|
||
└──────────────────────────────────┘
|
||
```
|
||
|
||
| 组件 | 技术 |
|
||
|------|------|
|
||
| **GUI** | Tauri + Svelte + TypeScript |
|
||
| **CLI** | Rust (but 命令) |
|
||
| **后端** | Rust |
|
||
| **底层** | Git(直接操作现有仓库) |
|
||
|
||
---
|
||
|
||
## 🚀 七大核心特性
|
||
|
||
### 1. 堆叠分支(Stacked Branches)
|
||
|
||
```
|
||
main
|
||
└── feature-a
|
||
└── feature-b ← 基于 feature-a
|
||
└── fix-c ← 基于 feature-b
|
||
```
|
||
|
||
**解决的问题**:
|
||
- 在开发功能 B 时,需要基于还没合并的功能 A
|
||
- 传统 Git 需要频繁 cherry-pick 或 rebase
|
||
- GitButler 自动处理堆叠和重新堆叠
|
||
|
||
**编辑任何提交**:修改堆叠中间的提交,上方分支自动重新堆叠。
|
||
|
||
### 2. 并行分支(Parallel Branches)
|
||
|
||
```
|
||
同时工作:
|
||
- feature-a (branch-1)
|
||
- bug-fix (branch-2)
|
||
- experiment (branch-3)
|
||
|
||
不需要切换分支!
|
||
```
|
||
|
||
**解决的问题**:
|
||
- 传统 Git 需要在不同分支间频繁 `checkout`
|
||
- GitButler 允许同时工作,各自提交
|
||
|
||
### 3. 提交管理(Commit Management)
|
||
|
||
| 操作 | 传统 Git | GitButler |
|
||
|------|---------|----------|
|
||
| 修改提交 | `git commit --amend` | 拖拽 |
|
||
| 拆分提交 | `git rebase -i` | 拖拽 |
|
||
| 移动提交 | `git cherry-pick` | 拖拽 |
|
||
| 重命名提交 | `git rebase -i` | 点击重命名 |
|
||
| 撤销提交 | `git revert` | 点击撤销 |
|
||
|
||
**忘掉 `git rebase -i`**:拖拽就够了。
|
||
|
||
### 4. 无限撤销(Undo Timeline)
|
||
|
||
```
|
||
操作日志:
|
||
09:00 - 创建了提交 "fix: bug"
|
||
09:15 - 合并到 main
|
||
09:30 - 推送
|
||
10:00 - 发现错误 → 一键撤销!
|
||
```
|
||
|
||
**解决的问题**:
|
||
- Git 的 `git reflog` 很难用
|
||
- GitButler 记录所有操作和变更
|
||
- 一键撤销或回退任何操作
|
||
|
||
### 5. 冲突处理(Conflict Resolution)
|
||
|
||
```
|
||
rebase 永远成功!
|
||
|
||
提交可以标记为"冲突中"
|
||
随时以任何顺序解决冲突
|
||
```
|
||
|
||
**解决的问题**:
|
||
- Git rebase 冲突时会中断
|
||
- GitButler 允许冲突存在,标记后继续工作
|
||
- 随时解决冲突,不阻塞其他操作
|
||
|
||
### 6. 代码托管集成(Forge Integration)
|
||
|
||
| 平台 | 功能 |
|
||
|------|------|
|
||
| **GitHub** | PR 创建/更新、CI 状态、分支列表 |
|
||
| **GitLab** | MR 创建/更新、Pipeline 状态 |
|
||
| **Bitbucket** | 支持中 |
|
||
|
||
**认证一次**,就能:
|
||
- 一键创建/更新 PR
|
||
- 查看 CI 状态
|
||
- 管理远程分支
|
||
|
||
### 7. AI 集成(AI Tooling)
|
||
|
||
| AI 功能 | 说明 |
|
||
|---------|------|
|
||
| 提交信息 | AI 自动生成 commit message |
|
||
| 分支命名 | AI 建议分支名 |
|
||
| PR 描述 | AI 生成 PR 描述 |
|
||
| Agent Hooks | 支持 Claude Code、Cursor 等 AI 编程工具 |
|
||
|
||
---
|
||
|
||
## 🤖 CLI:but 命令
|
||
|
||
### 安装
|
||
|
||
```bash
|
||
# macOS
|
||
brew install gitbutler
|
||
|
||
# 或从 releases 下载
|
||
```
|
||
|
||
### 常用命令
|
||
|
||
```bash
|
||
# 初始化项目
|
||
but init
|
||
|
||
# 创建分支
|
||
but branch create feature-abc
|
||
|
||
# 提交变更
|
||
but commit -m "fix: bug"
|
||
|
||
# 查看状态
|
||
but status
|
||
|
||
# AI 生成提交信息
|
||
but ai commit-message
|
||
|
||
# 创建 PR
|
||
but pr create
|
||
```
|
||
|
||
---
|
||
|
||
## 🆚 与 Git GUI 工具对比
|
||
|
||
| 特性 | GitButler | SourceTree | GitKraken | GitHub Desktop |
|
||
|------|-----------|-----------|----------|---------------|
|
||
| 堆叠分支 | ✅ | ❌ | ❌ | ❌ |
|
||
| 并行分支 | ✅ | ❌ | ❌ | ❌ |
|
||
| 拖拽提交管理 | ✅ | ❌ | 部分 | ❌ |
|
||
| 无限撤销 | ✅ | ❌ | ❌ | ❌ |
|
||
| 冲突标记 | ✅ | ❌ | ❌ | ❌ |
|
||
| AI 集成 | ✅ | ❌ | ❌ | ❌ |
|
||
| CLI | ✅ | ❌ | ❌ | ❌ |
|
||
| 跨平台 | ✅ | ✅ | ✅ | ✅ |
|
||
| 开源 | Fair Source | ❌ | ❌ | ✅ |
|
||
| 价格 | 免费 | 免费 | 付费 | 免费 |
|
||
|
||
---
|
||
|
||
## 💡 典型工作流
|
||
|
||
### 场景一:功能开发
|
||
|
||
```
|
||
1. gitbutler open .
|
||
2. 创建分支 "feature-user-auth"
|
||
3. 编写代码 → 拖拽文件到暂存区
|
||
4. AI 生成提交信息 → 提交
|
||
5. 推送 → 一键创建 PR
|
||
6. 查看 CI 状态 → 合并
|
||
```
|
||
|
||
### 场景二:多任务并行
|
||
|
||
```
|
||
1. 同时在 3 个分支工作:
|
||
- bug-fix (紧急)
|
||
- feature-a (计划内)
|
||
- experiment (探索)
|
||
2. 不需要切换分支
|
||
3. 各自提交,互不干扰
|
||
```
|
||
|
||
### 场景三:AI 编程助手
|
||
|
||
```
|
||
1. Claude Code 生成代码
|
||
2. GitButler 自动检测变更
|
||
3. AI 生成提交信息和分支名
|
||
4. 一键创建 PR
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 安装
|
||
|
||
### GUI
|
||
|
||
| 平台 | 方式 |
|
||
|------|------|
|
||
| **macOS** | Homebrew / DMG |
|
||
| **Windows** | MSI / Winget |
|
||
| **Linux** | AppImage / Deb |
|
||
|
||
### CLI
|
||
|
||
```bash
|
||
brew install gitbutler
|
||
# 或
|
||
cargo install gitbutler-cli
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 许可说明
|
||
|
||
| 条款 | 说明 |
|
||
|------|------|
|
||
| **当前** | Fair Source License |
|
||
| **含义** | 可以使用、查看源码、贡献,但不能构建竞品 |
|
||
| **2 年后** | 自动转为 MIT License |
|
||
| **实际** | MIT + 2 年非竞争条款 |
|
||
|
||
---
|
||
|
||
## 📊 评价
|
||
|
||
### 优点
|
||
- ✅ **堆叠分支**:复杂分支管理变得简单
|
||
- ✅ **拖拽操作**:告别 rebase -i
|
||
- ✅ **无限撤销**:不怕误操作
|
||
- ✅ **并行分支**:多任务不切换
|
||
- ✅ **AI 集成**:自动化提交信息、PR 描述
|
||
- ✅ **CLI 支持**:适合终端用户和 AI 代理
|
||
- ✅ **现有仓库直接使用**:不需要迁移
|
||
|
||
### 注意点
|
||
- ⚠️ Fair Source 许可(非严格开源)
|
||
- ⚠️ 相对较新(2023 年创建)
|
||
- ⚠️ 部分高级 Git 操作仍需命令行
|
||
- ⚠️ Bitbucket 支持还在开发中
|
||
|
||
### 适用场景
|
||
- 日常需要管理多个分支的开发者
|
||
- 使用 AI 编程工具(Claude Code/Cursor)的团队
|
||
- 希望简化 Git 操作的团队
|
||
- 需要频繁 rebase/变基的场景
|
||
|
||
---
|
||
|
||
## 🔗 资源
|
||
|
||
| 资源 | 链接 |
|
||
|------|------|
|
||
| **官网** | https://gitbutler.com |
|
||
| **GitHub** | https://github.com/gitbutlerapp/gitbutler |
|
||
| **文档** | https://docs.gitbutler.com |
|
||
| **下载** | https://gitbutler.com/downloads |
|
||
| **Discord** | https://discord.gg/MmFkmaJ42D |
|
||
| **博客** | https://blog.gitbutler.com |
|
||
|
||
---
|
||
|
||
*整理:知识库管理员 | 归档:2026-04-25* |