Skip to content

Git 版本控制 ​

这一章解决什么问题 ​

帮助你掌握 Zed 内置 Git 面板的完整使用流程,包括查看改动、暂存、diff、commit 等操作,并了解什么时候用 Zed 的 Git 功能,什么时候用命令行。

资料来源 ​

访问时间:2025-06-09

你会在什么时候用到它 ​

  • 完成代码修改后需要提交时
  • 想查看自己改了哪些文件时
  • 需要撤销错误修改时
  • 需要处理合并冲突时

认识 Git 面板 ​

Zed 的 Git 面板是内置的版本控制界面,无需安装任何扩展。

打开 Git 面板 ​

方式操作
快捷键Ctrl+Shift+G
命令面板Ctrl+Shift+P → git panel: toggle focus
状态栏点击状态栏的分支名

Git 面板界面 ​

Git 面板默认位于左侧,显示以下信息:

  • 当前分支名:如 main、feature-branch
  • 改动文件列表:显示 modified、added、deleted 状态的文件
  • Commit 输入框:编写 commit message
  • Commit 按钮:执行提交

Zed Git 面板

截图替换建议:在项目中修改几个文件后打开 Git 面板,截图保存为 docs/public/images/screenshots/zed-git-panel.png。

核心概念 ​

在深入操作前,先理解几个核心概念:

Working Tree(工作区) ​

你当前编辑的文件就是工作区。当你修改文件时,这些改动首先出现在工作区中。

Staging Area(暂存区) ​

暂存区是你准备提交的改动的"等待区"。你可以:

  • 将工作区的改动添加到暂存区(stage)
  • 从暂存区移除(unstage)
  • 暂存区的内容最终会被 commit

Modified / Staged / Unstaged ​

状态说明图标
Modified文件被修改但未暂存M(黄色)
Staged修改已添加到暂存区M(绿色)
Added新文件已暂存A(绿色)
Deleted文件被删除D(红色)
Untracked新文件未被 Git 跟踪?(灰色)

状态流转

修改文件 → Modified → Stage → Staged → Commit → 干净状态

查看 Diff(差异对比) ​

在提交前,你应该先查看自己改了什么。

查看单个文件的 Diff ​

  1. 在 Git 面板中点击一个 modified 文件
  2. 编辑器会显示 diff 视图:
    • 红色区域(-):删除的代码
    • 绿色区域(+):新增的代码

Diff 视图操作 ​

操作说明
点击 + 号暂存该块改动(stage hunk)
点击 - 号取消暂存该块改动(unstage hunk)
编辑 diff 内容Zed 的 diff 是可编辑的,可以直接在 diff 中修改代码

切换 Diff 显示模式 ​

Zed 支持两种 diff 显示模式:

  • Unified(统一视图):删除和新增在同一区域显示
  • Split(分栏视图):左边显示旧版本,右边显示新版本

可以在设置中切换:

json
{
  "diff_view_style": "unified"
}

Word Diff 高亮 ​

Zed 可以在 diff 中精确到单词级别的高亮,帮助你快速定位具体改动。

注意:具体界面按钮可能因版本而异,以你当前 Zed 版本的实际界面为准。

暂存改动(Stage) ​

暂存单个文件 ​

在 Git 面板中:

  1. 将鼠标悬停在文件上
  2. 点击出现的 Stage 按钮(或 + 图标)
  3. 文件从 Modified 变为 Staged 状态

暂存部分改动(Stage Hunk) ​

如果你只想提交文件中的部分改动:

  1. 点击文件查看 diff
  2. 在 diff 中,点击你想暂存的改动块旁边的 Stage Hunk 按钮
  3. 只有该块被暂存,其他改动仍留在工作区

精确控制

Stage Hunk 是精细提交的关键。比如你在一个文件中同时做了重构和 bug 修复,可以用 Stage Hunk 分别提交,让 commit 历史更清晰。

暂存所有改动 ​

在 Git 面板顶部,点击 Stage All 按钮,将所有 modified 文件一次性暂存。

取消暂存(Unstage) ​

  • 点击 staged 文件旁边的 Unstage 按钮(或 - 图标)
  • 或点击 Unstage All 取消所有暂存

编写 Commit Message ​

Commit 输入框 ​

在 Git 面板底部有 commit message 输入框:

  1. 输入简洁明了的提交描述
  2. 按 Ctrl+Enter 或点击 Commit 按钮提交

Commit Message 规范 ​

良好的 commit message 应该:

<type>: <简短描述>

<详细描述(可选)>

示例:

feat: 添加用户登录功能

- 实现 JWT token 验证
- 添加登录表单验证
- 处理登录失败错误提示

常用类型:

类型含义
feat新功能
fix修复 bug
docs文档修改
style代码格式(不影响功能)
refactor重构
test添加测试
chore构建/工具改动

AI 生成 Commit Message ​

Zed 支持用 AI 自动生成 commit message:

  1. 暂存你的改动
  2. 在 commit 输入框旁边,点击 AI 生成按钮
  3. Zed 会分析你的 diff 并生成建议的 commit message
  4. 可以编辑后使用

功能状态:此功能需要配置 AI 模型。详见 AI 辅助开发 章节。

提交(Commit) ​

基本提交流程 ​

1. 修改代码 → 文件显示为 Modified
2. 查看 Diff → 确认改动正确
3. Stage 改动 → 文件变为 Staged
4. 写 Commit Message → 描述这次改动
5. 点击 Commit → 提交完成

Commit 后操作 ​

提交后,你可以:

  • Push:Ctrl+Shift+P → git push 推送到远程
  • 查看历史:Zed 的 commit log 功能(如果在你的版本中可用)

撤销改动 ​

撤销未暂存的改动 ​

在 Git 面板中:

  1. 右键点击 modified 文件
  2. 选择 Discard Changes
  3. 文件恢复到最后一次 commit 的状态

不可逆操作

Discard Changes 会永久丢失未暂存的改动,请确认后再执行!

撤销已暂存的改动 ​

  1. 点击 staged 文件旁的 Unstage 按钮
  2. 文件回到 modified 状态
  3. 如果需要,再执行 Discard Changes

分支管理 ​

查看当前分支 ​

状态栏和 Git 面板顶部都显示当前分支名。

切换分支 ​

  1. Ctrl+Shift+P → git checkout
  2. 或使用分支选择器(如果界面中有)

创建新分支 ​

  1. Ctrl+Shift+P → git branch
  2. 输入新分支名

注意:分支管理的具体界面可能因版本而异。如果 Zed 的界面操作不方便,可以使用终端执行 git checkout -b <分支名>。

处理合并冲突 ​

当合并或 rebase 产生冲突时,Zed 会显示冲突界面。

查看冲突 ​

冲突文件在 Git 面板中标记为冲突状态,编辑器中会显示冲突标记:

typescript
<<<<<<< HEAD
console.log("本地代码");
=======
console.log("远程代码");
>>>>>>> feature-branch

解决冲突 ​

Zed 提供冲突解决界面:

  1. 点击冲突文件

  2. 每个冲突区域会显示选项:

    • Accept Ours:保留本地代码
    • Accept Theirs:保留远程代码
    • Accept Both:保留双方代码
    • 或手动编辑
  3. 解决所有冲突后,暂存文件并提交

放弃合并 ​

如果冲突太多想放弃:

powershell
git merge --abort        # 放弃合并
git rebase --abort       # 放弃 rebase

Zed Git 与命令行 Git 的配合 ​

Zed 的 Git 面板适合日常操作,但某些场景建议用命令行:

✅ 适合用 Zed Git 面板 ​

场景原因
查看改动可视化 diff 直观
逐行/逐块 stage界面操作更方便
写 commit message集成 AI 生成
快速 commit无需切换窗口
解决简单冲突可视化选择

➡️ 建议用命令行 / 其他工具 ​

场景推荐工具原因
复杂分支操作命令行 git更灵活
查看详细历史命令行 git log信息更全面
交互式 rebase命令行 git rebase -iZed 暂不支持
高级 Git 操作命令行 / lazygit功能更完整
可视化分支图GitHub Desktop / SourceTree图形化历史

推荐组合

日常使用 Zed Git 面板处理提交流程,复杂操作配合命令行或 lazygit。

完整提交流程示例 ​

┌──────────────────────────────────────────────────────┐
│  1. 修改代码                                          │
│     → 文件显示为 Modified (黄色 M)                    │
├──────────────────────────────────────────────────────┤
│  2. 查看 Diff                                         │
│     → 点击文件,确认改动正确                          │
├──────────────────────────────────────────────────────┤
│  3. Stage 改动                                        │
│     → 点击 + 按钮(全部或部分)                        │
│     → 文件变为 Staged (绿色 M)                        │
├──────────────────────────────────────────────────────┤
│  4. 写 Commit Message                                  │
│     → 描述这次改动的目的                              │
│     → 可选:用 AI 生成                                 │
├──────────────────────────────────────────────────────┤
│  5. Commit                                            │
│     → Ctrl+Enter 或点击 Commit 按钮                   │
├──────────────────────────────────────────────────────┤
│  6. Push (如需)                                       │
│     → Ctrl+Shift+P → git push                         │
└──────────────────────────────────────────────────────┘

常见问题 ​

Q:Git 面板不显示怎么办? ​

  • 确认项目根目录有 .git 文件夹
  • 按 Ctrl+Shift+G 重新打开
  • 重启 Zed

Q:Discard Changes 点了没反应? ​

某些版本可能需要通过命令面板执行 git discard。

Q:如何查看 commit 历史? ​

Zed 的 commit log 功能正在开发中。目前建议用命令行:

powershell
git log --oneline -20

或使用 lazygit。

Q:如何推送到远程? ​

  • 命令面板:Ctrl+Shift+P → git push
  • 或终端中执行 git push

Q:Git 面板显示与命令行不一致? ​

Zed 会实时监控 Git 状态变化。如果看到不一致:

  1. 在 Git 面板中刷新
  2. 或稍等片刻自动同步

本章小结 ​

  • Ctrl+Shift+G 打开 Git 面板
  • 红色 = 删除,绿色 = 新增,diff 视图可编辑
  • 点击 + Stage 文件,点击 hunk 按钮 Stage 部分改动
  • 写 commit message 后 Ctrl+Enter 提交
  • Discard Changes 可撤销未暂存改动(不可逆)
  • 复杂 Git 操作配合命令行使用

小练习 ​

  1. 修改一个文件,打开 Git 面板查看 diff
  2. 用 Stage Hunk 只暂存部分改动
  3. 写一个 commit message 并提交
  4. 用 git log 在终端中查看提交历史

基于 Zed 官方文档及社区资料整理,仅供学习参考