Files
chill_notes/wiki/sources/GitButler完全研究
2026-04-27 11:06:32 +08:00

322 lines
7.6 KiB
Plaintext
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GitButler 完全研究
> Git 的现代替代品:堆叠分支 + AI 集成 + 无限撤销
>
> 归档2026-04-25
---
## 📊 项目概览
| 属性 | 值 |
|------|------|
| **仓库** | gitbutlerapp/gitbutler |
| **Stars** | 20,643 |
| **语言** | Rust (后端) + Svelte/TypeScript (前端) |
| **框架** | Tauri |
| **创建** | 2023-01-31 |
| **许可** | Fair Source2 年后转 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 编程工具 |
---
## 🤖 CLIbut 命令
### 安装
```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*