Git

Zed 目前提供一套基本的 Git 功能,未来将支持更高级的功能,例如冲突解决工具、逐行暂存等等。

以下是目前支持的所有功能的概述

  • 提交
  • 暂存、推送、拉取和获取
  • 项目 Diff:所有更改的多缓冲区视图
  • 缓冲区和编辑器滚动条中的 Diff 指示器
  • 编辑器中用于未暂存更改的内联 Diff 切换和还原
  • 项目面板中的 Git 状态
  • 分支创建和切换
  • Git blame 查看

Git 面板

Git 面板可让您鸟瞰工作树的状态和 Git 的暂存区。

您可以使用 git_panel: toggle focus 打开 Git 面板,或者单击状态栏中的 Git 图标。

在面板中,您可以一目了然地看到项目的状态 - 哪个存储库和分支处于活动状态,哪些文件已更改以及每个文件的当前暂存状态。

Zed 会监视您的存储库,以便您在命令行上所做的更改能够立即反映出来。

项目 Diff

您可以通过打开项目 Diff (ctrl-g d|ctrl-g d) 来查看 Zed 中 Git 捕获的所有更改,可通过命令面板中的 git: diff 操作或 Git 面板访问。

项目 Diff 中显示的所有更改的行为与任何其他多缓冲区完全相同:它们都是文件的可编辑摘录。

您可以通过点击标签栏上的按钮或其相应的键绑定来暂存或取消暂存每个代码块以及整个文件。

获取、推送和拉取

通过 Git 面板上的按钮或通过在命令面板中查找相应的操作:git: fetchgit: pushgit: pull,在 Zed 中从您的 Git 存储库获取、推送或拉取。

暂存工作流程

Zed 有两种主要的暂存工作流程,使用项目 Diff 或直接使用面板。

使用项目 Diff

在项目 Diff 视图中,您可以专注于每个代码块,并通过单击标签栏按钮或通过键绑定 git: stage and next (cmd-y|alt-y) 单独暂存它们。

同样,使用 git: stage all (cmd-ctrl-y|ctrl-space) 键绑定同时暂存所有代码块,然后立即使用 git: commit (cmd-enter|ctrl-enter) 提交。

使用 Git 面板

从面板中,您可以简单地键入提交消息并点击提交按钮,或者 git: commit。这将自动暂存所有跟踪的文件(由条目的复选框中的 [·] 指示)并提交它们。

可以使用每个单独条目的复选框来暂存条目。可以使用面板顶部的按钮或 git: stage all 暂存所有更改。

提交

Zed 提供两个提交文本区域

  1. 第一个位于 Git 面板的底部。点击 cmd-enter|ctrl-enter 会立即提交所有已暂存的更改。
  2. 第二个可通过操作 git: expand commit editor 或通过在 Git 面板提交文本区域中获得焦点时点击 shift-escape| 获得。

撤消提交

一旦您在 Zed 中提交,您将在 Git 面板中的提交文本区域下方看到一个栏,其中将显示最近提交的提交。在那里,您可以点击“取消提交”按钮,该按钮执行 git reset HEADˆ--soft 命令。

Git 中的 AI 支持

Zed 目前支持 LLM 驱动的提交消息生成。您可以通过关注 Git 面板中的消息编辑器并单击左下角的铅笔图标,或使用 git: generate commit message (alt-tab|alt-l) 键绑定,要求 AI 生成提交消息。

请注意,您需要配置 LLM 提供程序。访问 助手配置页面 了解如何操作。

未来可能会有更高级的 AI 与 Git 功能集成。

Git 集成

Zed 与流行的 Git 托管服务集成,以确保 Git 提交哈希和对问题、拉取请求和合并请求的引用成为可点击的链接。

Zed 目前支持链接到 GitHubGitLabBitbucketSourceHutCodeberg 的托管版本。

Zed 还具有“复制永久链接”功能,用于创建指向 Git 托管服务上代码片段的永久链接。这些链接对于共享特定提交中文件的特定行或行范围非常有用。通过 命令面板 (搜索 permalink) 触发此操作,方法是创建 自定义键绑定editor::CopyPermalinkToLineeditor::OpenPermalinkToLine 操作,或者只需右键单击并在编辑器中选择了行后选择 复制永久链接

操作参考

操作按键绑定
git: add
无默认绑定
git: stage allcmd-ctrl-y
git: unstage allcmd-ctrl-shift-y
git: toggle stagedspace
git: stage and nextcmd-y
git: unstage and nextcmd-shift-y
git: commitcmd-enter
git: expand commit editorshift-escape
git: pushctrl-g up
git: force pushctrl-g shift-up
git: pullctrl-g down
git: fetchctrl-g ctrl-g
git: diffctrl-g d
git: restorecmd-alt-z
git: restore file
无默认绑定
git: branch
无默认绑定
git: switch
无默认绑定
git: checkout branch
无默认绑定
editor: toggle git blamecmd-alt-g b
editor: toggle git blame inline
无默认绑定

并非所有操作都具有默认的按键绑定,但可以通过自定义您的按键映射来绑定。