Zed 内置 Git 集成深度指南:仓库激活、Git Panel、暂存提交与工作树实战
【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zed
Zed 将 Git 版本控制能力内建在编辑器中:工作区状态、暂存区、分支信息、diff 审阅、提交、Stash 乃至 AI 提交信息生成都能在不离开编辑器的情况下完成。本文以 Zed 官方 Git 集成文档为主体,结合本仓库(Zed 编辑器源码)中crates/git、crates/git_ui的实现与assets/settings/default.json的默认配置,逐项讲解仓库激活机制、Git Panel 的使用与配置、各类 diff 视图、提交与分支管理、工作树、冲突解决、Stash 操作及 Git 托管平台集成,读完即可在 Zed 中跑通从"改代码 → 看 diff → 暂存 → 提交 → 推送"的完整工作流。
内置 Git 支持:以编辑器为中心管理版本控制
Zed 内置了 Git 支持,可让你在不离开编辑器的情况下管理版本控制。Git Panel 展示工作树状态、暂存区与分支信息;你在命令行上对仓库做的改动会立即反映到 Zed 中,反之亦然。
对于 Zed 原生不支持的 Git 操作,官方文档给出的指引是使用集成终端(在编辑器内直接打开终端执行git命令)来兜底。从源码结构看,Zed 的 Git 能力实现位于 crates/git(仓库、remote、status、commit、stash、blame 等底层模型),其 UI 交互层位于 crates/git_ui(Git Panel、diff 视图、branch/stash picker 等)。
仓库的全局开关体现在 assets/settings/default.json 的git.disable_git上:若设为true则关闭全部 Git 集成特性,设为false时下面的enable_status、enable_diff等子开关才会独立生效。
仓库激活机制(Repository Activation)
Zed 对仓库的"发现"与"激活"是两回事,官方文档对此有明确描述:
- 项目根位于 Git 仓库内或其子目录时,项目中的所有仓库立即激活。
- 项目根不在仓库内时(例如直接把主目录或一个存放多个项目的文件夹作为项目打开),项目根正下方的仓库也会立即激活;而更深层嵌套的仓库,要等到其中某个文件被打开后才激活——本地与远程项目行为一致。
- 未激活的仓库仍然会被完整索引与搜索,只有 Git 特性(status、diff、分支等)需要等待激活。
- 激活与否还与
file_scan_depth设置相关(见 all-settings.md):任何非零的file_scan_depth都会让"不在项目根目录正下方"的仓库延迟激活;而达到或超过扫描深度上限的仓库,要等其所在目录被按需索引后才会被发现。 - 在多文件夹项目中,深度与激活都是以每个根文件夹为基准分别计算的。
- 将
file_scan_depth设为0即可关闭延迟激活:此后每个被发现的仓库都会立即激活。
实践要点:Zed 会监控仓库文件系统事件,因此你在命令行
git commit、git checkout之后切回 Zed,Git Panel 中的状态会自动刷新,无需手动重载。
认识 Git Panel
Git Panel 展示工作树与 Git 暂存区的状态。打开方式有两种:
- 执行
git_panel::ToggleFocus动作(Linux 默认键位为Ctrl-Shift-G,见 default-linux.json); - 点击状态栏中的 Git 图标。
在面板中你可以一眼看到项目当前状态:哪个仓库、哪个分支处于激活状态,哪些文件发生了改动,以及每个文件的暂存状态。Zed 持续监控仓库,命令行中的改动会被即时反映出来。
Git Panel 的 UI 主体实现在 crates/git_ui/src/git_panel.rs,其设置项定义与默认值见 crates/git_ui/src/git_panel_settings.rs 与 assets/settings/default.json。
配置入口
打开设置编辑器(macOS 为Cmd+,,Linux/Windows 为Ctrl+,)即可定制 Git 行为,相关设置分散在两个页面中:
- Panels > Git Panel:面板停靠位置、树形/扁平视图、状态展示样式;
- Version Control:编辑器 gutter 指示器、行内 blame(Inline Blame)、hunk 样式等。
它们对应的其实是settings.json中git_panel与git两个顶层对象,完整可配置项与当前仓库默认值如下:
{ "git_panel": { "button": true, // 是否在状态栏显示 Git Panel 按钮 "dock": "right", // 面板停靠位置:"left" 或 "right" "default_width": 360, // 面板默认宽度(像素) "status_style": "icon", // 状态指示样式:"icon" | "label_color" "file_icons": false, // 是否显示文件图标 "folder_indicator": "icon", // 目录指示:"icon" | "chevron" | "both" "fallback_branch_name": "main",// 未设置 init.defaultBranch 时的默认分支名 "sort_by": "path", // 排序方式:"path" | "name" "group_by": "status", // 分组方式:"none" | "status" | "staging" "collapse_untracked_diff": false, "tree_view": false, // 树形(按文件夹层级)还是扁平列表 "diff_stats": true, // 是否在每个文件旁显示增删行数 "show_count_badge": false, // 是否在面板图标上显示未提交改动数徽标 "starts_open": false, // 启动时是否自动打开 Git Panel "commit_title_max_length": 0, // 提交信息标题长度告警阈值,0 为关闭 "entry_primary_click_action": "project_diff" // 点击文件条目的默认动作 } }其中group_by、sort_by、status_style等枚举取值定义在 crates/settings_content/src/settings_content.rs:
| 枚举 | 取值 | 说明 |
|---|---|---|
GitPanelGroupBy | none/status/staging | status时按Tracked/Untracked分组,staging时按Staged/Unstaged分组 |
GitPanelSortBy | path/name | 按路径或文件名排序 |
GitPanelClickBehavior | project_diff/file_diff/view_file | 点击文件条目打开项目级 diff、单文件 diff,或直接打开文件 |
StatusStyle | icon/label_color | 面板内 git 状态指示用图标还是标签着色 |
移动 Git Panel
根据官方用户指南,Git Panel 默认停靠在左侧;不过需注意,当前仓库随附的默认配置assets/settings/default.json中git_panel.dock取值为"right"(见 default.json),不同版本默认值可能有差异,请以你本地环境的实际表现为准。要移动它:进入Panels > Git Panel,修改Git Panel Dock即可把面板停靠到右侧或底部。
切换为树形视图
Git Panel 默认以扁平列表展示改动文件;若想按文件夹层级组织,可在面板右键菜单中勾选Tree View,或在Panels > Git Panel中开启tree_view。
行内 Blame(Inline Blame)
Zed 会在当前行显示 Git blame 信息。要关闭它,或设置延迟显示,请到Version Control > Inline Git Blame调整。其 JSON 配置位于git.inline_blame下(assets/settings/default.json),可配置项包括:
{ "git": { "inline_blame": { "enabled": true, // 关闭行内 blame "delay_ms": 0, // 光标移动后延迟显示(毫秒) "location": "inline", // 渲染位置 "padding": 7, // 源码行尾到 blame 的间距(em 宽度) "show_commit_summary": false, "min_column": 0 } } }blame 的底层解析实现在 crates/git/src/blame.rs,行内展示 UI 在 crates/git_ui/src/blame_ui.rs。
隐藏 Gutter 指示
gutter 中表示新增、修改、删除行的彩色条可以隐藏。进入Version Control > Git Gutter,把Visibility设为 "Hide";对应 JSON 配置为:
{ "git": { "git_gutter": "hide" // 默认 "tracked_files"(仅对已跟踪文件显示) } }完整取值说明见 default.json 的 git 段。
提交信息换行长度
Zed 会在 72 字符处折行提交信息(Git 社区惯例)。如需调整,在设置中搜索"Git Commit"并修改Preferred Line Length。其底层机制是 Zed 内置了一种名为Git Commit的语言,默认preferred_line_length即 72(见 default.json 的 Git Commit 语言段)。
审阅全部改动:Project Diff
使用git::Diff动作(Linux 默认键Ctrl-Shift-D,也可在命令面板或 Git Panel 中触发)可以打开Project Diff,查看 Git 捕获的全部改动。
Project Diff 中展示的所有改动与其它多缓冲区(multibuffer)行为完全一致——每一个片段都是可编辑的文件摘录(详见 multibuffers.md)。因此你可以在 diff 视图里直接编辑内容;通过标签栏上的按钮或对应快捷键,可以对单个 hunk乃至整个文件进行暂存(stage)或取消暂存(unstage)。
diff 多缓冲区的实现可参考 crates/git_ui/src/diff_multibuffer.rs、project_diff.rs 与 staged_diff.rs / unstaged_diff.rs。
词级 diff 高亮(Word Diff Highlighting)
默认情况下,Zed 会对被修改行内的单词级改动做高亮,便于快速定位到底改了什么。想全局关闭:打开设置编辑器,进入Languages & Tools > Miscellaneous,关闭Word Diff Enabled。想仅对特定语言关闭,在settings.json中加入:
{ "languages": { "Markdown": { "word_diff_enabled": false } } }该设置全局默认值为true,见 assets/settings/default.json。
Diff 视图样式:Split 与 Unified
Zed 提供两种 diff 展示模式:
- Split(分屏):原始版本与修改版本左右并排显示,适合比较文件结构或审阅大规模改动;
- Unified(统一):新增与删除行内联在同一视图中,适合聚焦具体行改动。
Split 为默认模式。要切换:打开设置编辑器(git::前缀动作的设置在 Version Control 页),搜索"diff view style",选择Split或Unified。也可以直接在settings.json中修改默认值:
{ "diff_view_style": "unified" }该键默认值为"split"(见 default.json)。关于设置编辑器的更多说明参见 configuring-zed.md。
你可以随时在两种模式间切换;偏好会同时作用于Project Diff、File History与Stash Diff View。这些 diff 视图都以多缓冲区形式工作,支持同时编辑多个摘录。
文件历史(File History)
File History 展示单个文件的提交历史,每条记录包含作者、时间戳与提交信息。选中某次提交后,会打开一个只含该文件在该提交中改动的 diff 视图。
打开方式(任选其一):
- 在 Project Panel 中右键文件,选择View File History;
- 在 Git Panel 中右键文件,选择View File History;
- 在编辑器标签页上右键,选择View File History;
- 用命令面板搜索"file history"。
拉取、推送与远程仓库(Fetch / Push / Pull / Remotes)
在 Git Panel 上点击对应按钮,或在命令面板中执行git::Fetch、git::Push、git::Pull动作即可完成拉取推送。
Push 目标解析顺序
Zed 遵循 Git 自身的 push 配置。推送时,Zed 按以下顺序确定目标远程仓库:
- 当前分支配置的
pushRemote; - Git 配置中的
remote.pushDefault; - 当前分支的跟踪远程仓库(tracking remote)。
这与 Git 标准行为一致:如果已在.gitconfig或通过git config配置了pushRemote/pushDefault,Zed 会直接采用这些设置。
多远程仓库选择器
当仓库配置了多个远程时,Git Panel 会出现远程选择器。点击 push/pull 按钮旁的远程按钮,即可为当次操作指定使用哪个远程。
暂存工作流(Staging Workflow)
Zed 提供两种主要的暂存工作流:在Project Diff中暂存,或直接在Git Panel中暂存。
方式一:在 Project Diff 中暂存
在 Project Diff 视图中可聚焦每个 hunk 并单独暂存:
- 使用标签栏按钮,或执行
git::StageAndNext(Linux 默认键Alt-Y),暂存当前 hunk 并跳到下一个; - 需要一次性暂存全部 hunk 时,执行
git::StageAll(Linux 默认键Ctrl-Space),随后立即用git::Commit(Linux 默认键Ctrl-Enter)提交。
方式二:直接在 Git Panel 中操作
从面板底部输入提交信息,点击提交按钮或执行git::Commit,即可自动暂存所有已跟踪文件并提交(条目复选框显示[·]表示已暂存)。
更精细的操作包括:
- 勾选每条记录的复选框来单独暂存;
- 点击面板顶部按钮或
git::StageAll暂存全部改动; - 条目默认按Tracked与Untracked两个分区(section)组织,每个分区可以单独暂存而不影响其他分区:勾选分区头的复选框,或用
git::StageSection/git::UnstageSection(作用于当前选中条目所在分区)。这两个动作默认没有键位绑定;若常用,可在GitPanel上下文中自行绑定(见 key-bindings.md)。右键条目也可弹出这些操作。
此外,右键 Git Panel 中的文件选择View File可直接在编辑器中打开该文件(不进入 diff);选择Open Diff或Open Diff (File)则进入 diff 视图审阅改动。
面板交互相关的点击行为默认值project_diff、树形展开/折叠等,均可在git_panel设置中调整,见上文配置小节。
提交(Committing)
Zed 提供两个提交信息输入区域:
- 第一个位于Git Panel 底部,输入后按
git::Commit(Linux 默认键Ctrl-Enter)即可立即提交所有已暂存改动; - 第二个通过动作
git::ExpandCommitEditor唤起——在 Git Panel 提交输入框聚焦时按对应键(Linux 默认键Shift-Escape)可展开一个更大的提交编辑器(其键位见 default-linux.json)。
撤销一次提交(Undoing a Commit)
在 Zed 中提交后,Git Panel 提交输入框下方会出现一个显示最近一次提交的栏。点击其中的Uncommit按钮即可撤销提交,其本质是执行:
git reset HEAD^ --soft注:此命令仅撤销提交、保留所有改动在工作区(
--soft模式),不会丢失你的修改。
配置提交行宽
默认提交行宽为72,可在本地settings.json中修改,具体方法见上文"提交信息换行长度"。
分支管理(Branch Management)
创建与切换分支
git::Branch:新建分支;git::Switch或git::CheckoutBranch:切换已有分支。
当你在 Git 工作树中工作时,切换进新工作树后应使用分支选择器来创建或检出该工作树要使用的分支(避免同一分支被多个工作树同时检出)。
删除分支
用git::Switch打开分支切换器,找到目标分支后使用删除选项即可。Zed 删除前会二次确认,防止误删造成数据丢失。
注意:你无法删除当前已检出的分支,需先切换到其他分支。
分支/分支切换器与相关 diff 的实现在 crates/git_ui/src/branch_picker.rs 与 crates/git_ui/src/branch_diff.rs。
Git 工作树(Git Worktrees)
Git worktree 允许你在磁盘上同时保留同一仓库的多个检出副本。当你想在不 stash、不重新构建、不影响主检出的前提下同时处理多个分支或任务时,这非常有用。
从标题栏(项目选择器旁)打开工作树选择器,或执行git::Worktree动作(Linux 默认键Alt-Ctrl-Shift-W,见 default-linux.json)。在 picker 中可以:
- 从当前分支或默认分支创建新的 linked worktree;
- 输入名称创建指定名称的工作树,或让 Zed 自动命名;
- 将当前工作区切换到一个已有工作树;
- 在新窗口中打开某个已有工作树;
- 删除当前项目中未打开的 linked worktree。
工作树管理要点
- 新建工作树初始处于detached HEAD状态;切换到新工作树后,请用工作树选择器旁的分支选择器创建新分支或检出某个尚未被占用的已有分支。这样能避免 Zed 在不同工作树中意外检出同一分支。
- 新工作树的存放目录由
git.worktree_directory设置控制(位于git对象下),默认在仓库工作目录的../worktrees下创建。见 assets/settings/default.json 中关于该设置的详细注释与示例,以及 all-settings.md:
worktree_directory示例 | 结果位置 |
|---|---|
"../worktrees"(默认) | 项目在~/code/zed时创建到~/code/worktrees/zed/ |
".git/zed-worktrees" | <项目>/.git/zed-worktrees/ |
"my-worktrees" | <项目>/my-worktrees/ |
注意:当解析出的目录在项目根外部时,Zed 会自动追加以保证同名相邻仓库不冲突;目录在项目根内部时不会追加额外组件(本身已按项目隔离)。尾部斜杠会被忽略。
初始化钩子(Init Setup)
若想在 Zed 创建 linked worktree 后执行初始化步骤,可借助任务系统:使用create_worktreetask hook。面向 Agent 的隔离场景,参见 Worktree Isolation(并行 Agent)。
多根工作区(Multi-root Workspaces)
当项目包含多个 Git 仓库(多根文件夹)时,从 picker 新建工作树会为每个仓库分别创建 linked worktree;项目中非 Git 的文件夹会原样包含进新工作区。
合并冲突(Merge Conflicts)
merge、rebase 或 pull 之后遇到冲突时,Zed 会在文件中高亮冲突区域,并在每个冲突上方显示解决按钮。
查看冲突
- 冲突文件会在 Git Panel 中以警告图标标出;
- Project Diff 视图中也会高亮每个冲突区域:
- 你当前分支的改动以绿色高亮;
- 传入分支(incoming branch)的改动以蓝色高亮。
解决冲突
每个冲突提供三个按钮:
- Use [branch-name]:保留某个分支的改动(显示真实分支名,如
main); - Use [other-branch]:保留另一个分支的改动(如
feature-branch); - Use Both:同时保留两边改动,且你的分支改动在前。
点击按钮即可解决该冲突:冲突标记会被移除并替换为你所选的内容。一个文件的所有冲突解决完毕后,将其暂存并提交即可完成合并。
技巧:对于需要手工精调的复杂冲突,可直接编辑文件——手动删除
<<<<<<<、=======、>>>>>>>冲突标记并保留想要的内容即可。
冲突 UI 实现在 crates/git_ui/src/conflict_view.rs。
暂存与恢复:Stash
git stash允许你临时保存未提交改动、让工作目录恢复到干净状态——特别适合需要快速切换分支或拉取更新、又不想提交半成品工作的场景。
创建 Stash
| 动作 | 行为 |
|---|---|
git::StashAll | 保存全部改动(已暂存 + 未暂存 + 未跟踪文件)并清空工作目录 |
git::StashTracked | 只保存已跟踪文件的改动,未跟踪文件留在原地 |
git::StashStaged | 只保存已暂存改动,未暂存改动留在原地(需要 Git 2.35 或更新版本) |
Git Panel 的溢出菜单会根据当前Group By模式动态提供匹配的选项:按 Tracked & Untracked 分组时提供Stash Tracked,按 Staged & Unstaged 分组时提供Stash Staged;Stash All则始终可用。
执行这些动作时,Zed 都会先弹窗询问可选的 stash 名称;直接确认空输入则让 git 生成惯用的WIP on ...描述。
管理 Stash
通过git::ViewStash或 Git Panel 溢出菜单打开stash picker,你可以:
- 查看 stash 列表:浏览全部 stash 及其描述、时间戳;
- 打开 diff:查看每个 stash 里到底存了什么改动;
- Apply(应用):把 stash 改动应用到工作目录,同时保留该 stash 条目;
- Pop(弹出):应用改动并从列表移除该条目;
- Drop(丢弃):不应用而直接删除不需要的 stash 条目。
相关实现见 crates/git_ui/src/stash_picker.rs 与 crates/git/src/stash.rs。
快速操作最新 Stash
针对最近一次 stash,Zed 提供了直接动作:
- Apply latest stash:
git::StashApply——应用但不移除; - Pop latest stash:
git::StashPop——应用并移除。
Stash Diff 视图
在 stash picker 中选中某个 stash 后按键(对应stash_picker::ShowStashItem动作)即可进入 stash 的 diff 视图,其中的键位如下(Linux 默认,见 default-linux.json):
| 动作 | 键位(Linux 默认) |
|---|---|
| Apply stash | git::ApplyCurrentStash:Ctrl-Space |
| Pop stash(应用并移除) | git::PopCurrentStash:Ctrl-Shift-Space |
| Drop stash(不应用直接删除) | git::DropCurrentStash:Ctrl-Shift-Backspace |
AI 辅助提交信息(AI Support in Git)
Zed 目前支持由 LLM 生成提交信息。使用方式:聚焦 Git Panel 内的提交信息编辑框,点击左下角的铅笔图标,或执行动作git::GenerateCommitMessage(Linux 默认键Alt-L)。
前提是你需要先配置好 LLM Provider——既可以使用自己的 API Key,也可以使用 Zed 托管的 AI 模型,参见 AI 快速开始。
指定提交信息专用模型
可以为该任务指定偏好的模型,在 agent 设置中加入commit_message_model字段(详见 Feature-specific models):
{ "agent": { "commit_message_model": { "provider": "anthropic", "model": "claude-4-5-haiku" } } }追加自定义指令
- 只影响提交信息生成的指令:在 agent 设置中使用
commit_message_instructions字段:
{ "agent": { "commit_message_instructions": "Use the Conventional Commits format: <type>(<scope>): <description>." } }- 同时作用于提交信息与 Agent 的更广泛指令:使用全局
AGENTS.md文件——macOS/Linux 位于~/.config/zed/AGENTS.md,Windows 位于%APPDATA%\Zed\AGENTS.md。这些指令会与其它指令文件(如.rules、项目内AGENTS.md)一并发送给模型。 - 相关默认行为见 assets/settings/default.json:
agent.commit_message_include_project_rules默认为true,即生成提交信息时会把项目规则文件纳入提示词。
版本提示:在 Zed v1.4.0 之前,此能力通过Rules Library配置,该功能已被移除。迁移方法见 Migrating from Rules。
Git 托管平台集成与 Permalinks(Git Integrations)
Zed 与主流 Git 托管服务集成,使 commit hash、Issue、Pull Request、Merge Request 引用变为可点击链接。目前支持托管版本的:
- GitHub、GitLab、Bitbucket、SourceHut、Tangled、Codeberg。
自托管实例(Self-Hosted)
Zed 会通过检查 Git remote URL 中的关键字自动识别托管服务商:例如自托管 URL 里包含gitlab、gitea等已识别的服务商名称时,Zed 无需任何配置即可自动注册该托管商。
如果自托管实例的 URL 不含可识别关键字,可手动配置git_hosting_providers,让 commit hash 与 permalink 正确解析到你的域名:
{ "git_hosting_providers": [ { "provider": "gitlab", "name": "Corp GitLab", "base_url": "https://git.example.corp" } ] }字段说明:
provider:指定托管服务类型。支持github、gitlab、bitbucket、gitea、forgejo、sourcehut、tangled;name:可选,作为该实例的展示名称;base_url:自托管服务器的根 URL。
可以同时配置多个自定义 Provider 以应对多个自托管实例。该设置的默认空数组与注释示例见 assets/settings/default.json,其解析实现可参考 crates/git/src/hosting_provider.rs。
Permalinks(永久链接)
Zed 可以在托管服务上打开或复制指向文件、代码选区(含特定 commit)的永久链接,方便分享某一行或某段范围。
对编辑器中的当前选区:
- 执行
editor::CopyPermalinkToLine或editor::OpenPermalinkToLine(可在命令面板中搜索permalink,或绑定自定义键位,参见 key-bindings.md); - 或右键选择Copy Permalink to Line。
对整个文件(不限定行):可从文件标签页或 Project Panel 右键选择Open File Permalink/Copy File Permalink。
Diff Hunk 键盘快捷键
查看带改动的文件时,Zed 会展示可展开/折叠的 diff hunk,便于详细审阅:
- 展开全部 diff hunks:
editor::ExpandAllDiffHunks; - 折叠全部 diff hunks:按
Escape(绑定到editor::Cancel); - 切换选中 hunks 的展开状态:
editor::ToggleSelectedDiffHunks; - 在 hunks 之间跳转:
editor::GoToHunk与editor::GoToPreviousHunk。
技巧:
Escape是快速折叠所有已展开 diff hunk、回到改动总览的最快方式。
常用 Git 动作速查(Action Reference)
下表中的键位以当前仓库随附的 Linux 默认键位为准(来源 assets/keymaps/default-linux.json),macOS / Windows 默认键位会以Cmd/ 相应修饰键呈现不同组合;部分动作默认无键位,可按照 key-bindings.md 中的方法自行绑定。
| 动作 | Linux 默认键位 | 说明 |
|---|---|---|
git_panel::ToggleFocus | Ctrl-Shift-G | 聚焦/打开 Git Panel |
git::Diff | Ctrl-Shift-D/ Git Panel 内Ctrl-G D | 打开 Project Diff |
git::StageAll | Ctrl-Space | 暂存全部改动 |
git::UnstageAll | Ctrl-Shift-Space | 取消暂存全部改动 |
git::ToggleStaged | Ctrl-Alt-Y/ Git Panel 内Space | 切换当前条目暂存状态 |
git::StageAndNext | Alt-Y | 暂存当前 hunk 并跳到下一处 |
git::UnstageAndNext | Alt-Shift-Y | 取消暂存当前 hunk 并跳到下一处 |
git::Commit | Ctrl-Enter | 提交 |
git::ExpandCommitEditor | Shift-Escape | 展开更大的提交信息编辑器 |
git::Fetch | Ctrl-G Ctrl-G | 拉取远程引用 |
git::Push | Ctrl-G ↑(Ctrl-G Up) | 推送 |
git::Pull | Ctrl-G ↓(Ctrl-G Down) | 拉取并合并 |
git::PullRebase | Ctrl-G Shift-Down | 拉取并 rebase |
git::ForcePush | Ctrl-G Shift-Up | 强制推送 |
git::Restore/git::RestoreAndNext | Ctrl-K Ctrl-R | 还原改动 |
git::RestoreFile | Git Panel 内Delete/Backspace | 还原整个文件 |
git::Blame | Alt-G B | 查看 blame 信息 |
git::Worktree | Alt-Ctrl-Shift-W | 打开工作树选择器 |
git::GenerateCommitMessage | Alt-L | 用 AI 生成提交信息 |
git::ApplyCurrentStash | Ctrl-Space(stash diff 内) | 应用当前 stash |
git::PopCurrentStash | Ctrl-Shift-Space(stash diff 内) | 弹出当前 stash |
git::DropCurrentStash | Ctrl-Shift-Backspace(stash diff 内) | 丢弃当前 stash |
git::StageSection/git::UnstageSection | 默认未绑定 | 暂存/取消暂存整个分区(可在GitPanel上下文绑定) |
上述动作的定义与面板/视图的对应关系,可到 crates/git_ui 与 crates/zed_actions 中按名字检索确认。
把 Zed 用作 Git 提交编辑器(Git CLI 配置)
如果希望在命令行提交时也使用 Zed 编辑提交信息,可以用zed --wait(等待 Zed 窗口关闭后再继续执行命令):
git config --global core.editor "zed --wait"或者在 shell 环境(~/.zshrc、~/.bashrc等)中设置:
export GIT_EDITOR="zed --wait"这样git commit弹出的提交信息编辑器就是 Zed,与在 Git Panel 内提交获得一致的行宽、语法与交互体验。
结语
围绕一份 Git 集成指南,本文结合 Zed 仓库源码(crates/git、crates/git_ui)与默认配置(assets/settings/default.json)完整梳理了从仓库激活、Git Panel、diff/历史审阅、暂存与提交、分支与工作树,到冲突解决、Stash、AI 提交信息与托管平台集成的全链路能力。想深入了解任意设置项的详细取值,可继续查阅全量设置参考、键位绑定指南与多缓冲区说明。
【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zed
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考