跳到主要内容

开发

本章将帮助用户在 ZStudio 中创建解决方案和项目。解决方案和项目的概念可以参考 Visual studio 中 Project / Solution 结构

Visual Studio 中的解决方案和项目结构

解决方案和项目

在 ZStudio 中,在 ZStudio 中,解决方案是包含一个或多个项目的容器,每个项目可以独立构建并且拥有自己的代码和配置。解决方案作为顶级容器,负责协调和管理多个项目之间的依赖关系以及生成顺序。

解决方案(Solution)可以包含多个项目(Project),同一个项目也可以存在于多个解决方案中;类似的,同一份源码也可以用于生成不同项目。

项目与项目文件

每个项目仅能生成一种项目类型文件,如可执行文件或者库文件。但用户可以为同一份源码创建多个项目生成不同类型的文件。ZStudio 为解决方案中的每个项目生成单独的 {project_name}.zsproj 项目文件, {project_name}.zsproj 包含项目的所有配置,包括该项目的构建、运行、调试、性能分析等设置参数,不建议手动编辑该文件。

解决方案与解决方案文件

ZStudio 中的解决方案可以包含单个或多个项目。当用户打开某个解决方案时,ZStudio 自动加载该解决方案包含的所有项目。用户可以同时处理属于同一个解决方案的多个项目,但是在单个 ZStudio 窗口中只能打开一个解决方案,用户也可以根据需要打开多个窗口同时处理多个解决方案。ZStudio 中的解决方案由文本文件 {solution_name}.zssln 描述,当用户将多个不同的项目配置为解决方案的一部分,文本文件将自动更新描述,不应对其进行手动编辑。

解决方案资源管理器

解决方案资源管理器(Solution Explorer)中包含了与解决方案/项目有关的大多数操作,解决方案资源管理器包含项目快捷控制(Project Controller)、项目导航(Project Navigator)和文件导航(File Navigator)等视图,用户可以通过右上角的 more-action-button更多操作...)按钮自定义显示或隐藏各个视图。

控制解决方案资源管理器中的视图可见性

项目快捷控制(Project Controller)提供了项目开发最常用的工具快捷按钮,从左往右依次为构建构建配置运行运行配置调试调试配置。用户也可以通过项目快捷控制中的下拉框快速切换当前操作的项目并更改项目的配置、目标平台、目标 SoC。

项目快捷控制视图

**项目导航(Project Navigator)**以目录树结构显示了解决方案中每个项目的结构,每个项目节点展开后包含头文件节点(Headers)、源码文件节点(Sources)、项目输出(Output)、引用节点(References)以及外部依赖(Dependencies)节点。

项目导航视图

**文件导航(File Navigator)**中存放了解决方案中包含的所有文件,包括解决方案文件 {solution_name}.zssln 、项目配置文件 {project_name}.zsproj 及所有项目文件夹。

文件导航视图

快速上手

本节将介绍如何在 ZStudio 中创建解决方案和项目,如何在静态库项目和可执行项目之间创建引用关系,以及如何添加项目的外部依赖。

创建空解决方案

ZStudio 支持从头开始构造解决方案和项目,用户可以创建不包含任何项目的空白解决方案。

  1. 在项目导航中,点击"新建解决方案"按钮或者在菜单栏中选择"文件" > "新建解决方案"。
  2. 在对话框中,输入解决方案的位置和名称(下图中以 Quick_Start 为例),点击"创建" 。
创建空解决方案

创建新项目

创建空解决方案后,点击项目导航(Project Navigator)中的的"新建项目",向解决方案中添加一个 Hello 项目。在"创建新项目"对话框中,用户需要为新建项目输入名称、存放位置、项目类型、语言及使用的工具链等基本信息。

将"项目类型"选择为"可执行项目,并"在"解决方案(Solution)"下拉框中选择"添加至现有解决方案(Add To Exist)" 将 Hello 项目添加至 Quick_Start 解决方案中。

在当前解决方案中创建 Hello 项目

用户也可以选择"添加项目"并指定本地电脑中的路径将已存在的项目添加至当前解决方案中。

当用户在没有解决方案的情况下直接新建项目时,ZStudio 会自动创建一个与项目同名的解决方案作为容器,将该项目包含在其中,确保即使用户没有显式创建解决方案,ZStudio 仍然会为项目提供管理结构。

直接新建项目

添加项目代码并构建运行

用户可以向 Hello 项目中添加项目代码。右键点击"Sources"节点选择"新建源码文件",或者直接点击"+"新建源码文件。在弹出的对话框中为源码文件命名 main.c。源码文件将在编辑器中打开,请在编辑器中输入代码并保存。

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Hello World\n");
return 0;
}

点击 Build 按钮开始构建 Hello 项目,在底部的构建控制台中检查构建输出和结果。

构建 Hello 项目

点击 Run 按钮并在运行控制台中检查运行结果。

运行 Hello 项目

添加项目引用

解决方案通常包含多个项目,如静态库项目,动态库项目或可执行项目,这些项目之间可能存在引用(Reference)。添加项目引用关系,除 Hello 项目外,需要再新建一个 Add 静态库文件项目。

  1. 在"解决方案资源管理器"中的"项目导航"的右键上下文菜单中,选择"新建项目"或者将鼠标悬浮于"项目导航"节点然后单击 + 按钮。

    在项目导航节点中新建项目

    在"添加新项目"页面中,将项目命名为 Add,然后在"项目类型"下选择"静态库",将新建项目 Add 添加至现有解决方案 Quick_Start 中,然后选择"创建"。

    向当前解决方案中新建一个静态库项目 Add
  2. Add 项目中添加代码

    展开项目目录树,右击"头文件(Headers)"节点选择"新建头文件",在弹出的对话框中为头文件命名为 add.h 并选择文件存放位置。文件将在编辑器中打开,请在编辑器中输入代码并保存。

    int add(int num0, int num1);

    add.h 存放于项目文件夹并显示在"Headers"节点中。

    右键点击"Sources"节点选择"新建源码文件",或者直接点击"+"按钮。在弹出的对话框中为源码文件命名 add.c。这里定义一个简单的加法运算函数。

    int add(int num0, int num1)
    {
    return num0 + num1;
    }

    add.c 存放于项目文件夹并显示在"Sources"节点中。

    添加项目代码
  3. 添加引用关系

    添加引用(Reference)会在两个项目之间创建依赖关系,构建解决方案时会先构建 Add 静态库项目,再构建当前 Hello 可执行项目。

    右键单击 Hello 项目的"引用 (Reference)"节点,然后从上下文菜单中选择"管理引用" 。

    管理项目引用

    在"管理引用"对话框中,勾选 Add 项目。在链接库依赖项(Link Library Dependency)窗格中,指定是否链接 .lib 依赖项目生成的文件,此处选择"True",然后"保存" 。展开 Hello 项目的引用关系节点即可看到 Add 项目。

  4. 检查项目引用是否正确创建了依赖关系:将 Hello 设置为当前活动项目,然后点击"构建"。在控制台中检查构建结果。

    检查项目引用是否生效
    注意

    用户在修改了 .h 头文件但未修改 .c 源文件的情况下,需要先从菜单栏执行 "Build" > "Clean" 再重新进行构建。

  5. 点击"运行"并确认项目输出。

    确认运行结果
信息

静态库的引用会在构建时将其链接到最终的二进制文件中,不会显示在项目构建配置里编译器的头文件路径列表中。

添加项目依赖

当用户创建的项目需要在 SoC 或开发板上运行时,需要添加适用于 SoC 或开发板的软件包等外部依赖(Dependencies)与项目一同进行构建。除了适用于 SoC 或开发板的软件包,项目依赖也可以是通用的函数库。用户可以遵循以下步骤添加项目依赖:

  1. 项目导航中找到需要添加外部依赖的项目。

  2. 展开目录树,右键项目的"依赖(Dependencies)"节点,然后从上下文菜单中选择"管理依赖" 。

  3. 可下载包列表中找到需要添加的软件包(包含用户导入的软件包),双击软件包将其添加至依赖包列表

    管理依赖弹窗上方的 SoC 搜索栏自动填入项目配置中选择的 SoC, 用户可以通过在微架构搜索栏中输入关键字快速找出需要的软件包,可下载包列表仅显示包含搜索字段的软包同时过滤掉所有不匹配的项。

    管理依赖
  4. 用户可以在管理依赖弹窗的依赖包列表中更改依赖包的构建和链接顺序或者移除依赖包。所有添加进项目的依赖包将依序同步显示在项目的依赖节点中。

    项目依赖节点

从示例解决方案开始

ZStudio 中内置了一些示例,用户可以通过"从示例解决方案开始"选项打开这些项目。

在 ZSolution 主菜单中,选择"文件" > "从示例解决方案开始",从下拉框中选择一个示例,用户可以为示例解决方案重命名并指定存放位置然后点击"打开"。

从示例解决方案开始

示例项目将在当前窗口中加载出来。

将示例解决方案加载到当前窗口

从存储库克隆项目

用户也可以从在 ZSolution 中直接克隆存储库项目,并为其创建一个解决方案。

  1. 在 ZSolution 主菜单中,选择"文件" > "从存储库克隆项目"

  2. 在弹窗中指定仓库的 URL,并指定它在本地的存放位置,如果你的仓库中包含子仓库,请候选"递归克隆"。

    从存储库克隆项目

用户可以在右下角通知弹窗中查看克隆进度。

查看克隆进度

克隆完成后,用户需要选择如何处理仓库。

如何处理克隆的仓库

导入 Makefile 或 CMake 项目

ZStudio 仍在不断优化对 Makefile 或 CMake 项目的完全支持,欢迎在 1nfinite 留下反馈。

导入 Makefile 项目

若要导入 Makefile 项目,请遵循以下步骤:

  1. 在菜单栏选择"文件" > "导入 Makefile 项目"。

    image-import-makefile-1

    image-import-makefile-2.png

  2. 在"项目根目录"中点击browse-button(浏览)按钮,在文件系统找到需要导入的项目的最上层文件夹。

  3. ZStudio 会在项目根目录中检测 Makefile 并识别为入口文件,用户也可以直接手动指定项目下的 Makefile 作为入口文件。

  4. 添加 Make 参数,ZStudio 将使用这些参数提取项目信息,例如:TOOLCHAIN=terapines

  5. Make Clean 参数:如果导入的项目中已经被 make 编译过且存在编译的中间文件没有执行 make clean 命令,那么需要指定 clean 参数清理 make 生成的输出文件,否则会导致项目导入失败。

    提示

    执行 clean 可以清除之前构建的文件,从一个干净的状态开始构建项目,确保重新构建的正确性和一致性,如果不指定 clean 参数可能造成项目导入失败。clean 只会清理导入 ZStudio 的项目,不会对用户原有的项目产生影响。

  6. 当遇到无法处理的非编译命令时,ZStudio 提供以下选项:

    Dealing with non-compilation commands
    • 在下一条编译命令执行开始前执行。
    • 在上一条编译命令执行结束后执行。
    • 忽略:忽略这些无法判断的命令,不对其进行任何特殊处理。
  7. 导入过程会为项目生成一些配置文件,用户可以选择"使用项目副本"导入或者"使用原始项目"导入。

    Choose the original project or a copied version
    • 使用项目副本:此选项将在导入过程中先创建项目副本,所有导入过程生成得配置文件都将被添加至项目副本中,不会影响原始项目,但是导入时间会增加。
    • 使用原始项目:如果希望项目快速导入,且不介意导入过程生成的配置文件被添加至原始项目中,可以选择"使用原始项目"。
  8. 点击"导入",右下角弹窗将提示用户更新项目配置。导入的 makefile 项目可能存在与当前工具链配置不兼容的内容,在 ZStudio 中构建导入的项目前,如需修正不兼容的编译选项,请点击右下角弹窗中的"修复 Makefile 项目"。

    修复 Makefile 项目选项

    用户在命令面板 Ctrl+Shift+P 中搜索并点击"修复 Makefile 项目"可重新调出此弹窗。

    修复 Makefile 项目弹窗
    提示

    用户需要参考 ZCC 使用手册 及其他工具链使用手册,修正 ZCC 与 GCC 不兼容的编译选项。

导入成功后,Makefile 项目将在 ZStudio 中加载。

导入后的 Makefile 项目
注意

项目跨平台使用可能导致路径兼容问题,Linux 系统使用斜杠(/)作为路径分隔符;而 Windows 系统使用反斜杠(\)作为路径分隔符。建议在导入前在 Makefile 文件中更改路径。也可以导入后使用"修复 Makefile 项目"功能进行修改。

导入 CMake 项目

若要导入 CMake 项目,请遵循以下步骤:

  1. 在菜单栏选择"文件" > "导入 CMake 项目"。

    image-import-cmake-1

    image-import-cmake-2

  2. 在项目弹窗中,配置 CMake 项目。

    • 项目根目录:在文件系统中选择需要导入的 CMake 项目的顶层文件夹。
    • CMake 工作目录:此处需要指向执行"cmake"命令,存放生成 CMake 文件的文件夹。推荐使用 build 目录。用户可以在导入前手动在 CMake 项目中创建 build 文件夹。
    • CMake 运行参数:此处指定生成项目所需的完整 CMake 参数,ZStudio 使用 Make 作为构建工具,所以需要避免使用 -GNinja 等参数。
    • 环境变量:点击 + 添加在导入过程中传给 CMake 的环境变量。环境变量的格式为 HOME=/HOME/username,使用 = 作为键和值之间的分隔符。

    其他设置同导入 Makefile 项目保持一致。

  3. 点击"导入"并在运行控制台中检查导入进度。

    检查导入进度

删除解决方案、项目或文件

若要删除解决方案或其他组件,请使用 Windows 中的文件资源管理器删除包含 {solution_name}.zssln 解决方案文件的文件夹。操作方法如下。

  1. 解决方案资源管理器中,右键单击要删除的解决方案,在上下文菜单中选择"在文件资源管理器中显示"。

    转到 Windows 文件资源管理器
  2. 在文件资源管理器中,选择包含解决方案的文件夹,然后删除整个文件夹。

删除项目或项目文件

若要从解决方案中删除项目,请在文件导航项目导航中找到想删除的项目,在右键上下文菜单点击"删除"或"删除项目"。用户也可以从 Windows 文件资源管理器中将其删除。

移除项目或项目文件

用户可以在项目导航中中右键单击项目上下文菜单移除(Remove)解决方案中的项目或源码文件。移除的项目或项目文件 不再显示在项目导航视图中,但依然存在于文件导航及 Windows 文件资源管理器中的解决方案文件夹。

移除项目

项目导航中恢复已移除的项目(恢复已删除的项目需要先从系统回收站将文件还原至解决方案文件夹内),请鼠标悬浮于"项目导航"节点然后单击 add-project-button "添加项目",在 Windows 文件资源管理器中解决方案文件夹下 找到需要恢复的项目文件 {project_name}.zsproj 并打开。

软件包管理

ZStudio 包管理器(Pack Manager)提供了一个集中式的资源库。通过包管理器,用户可以搜索并下载适用于特定 SoC 或开发板的软件包或为特定领域(如 DSP,NN)提供优化的功能的软件包,并将其添加到项目中。 包管理器支持安装多个版本的软件包,方便在不同的项目中使用不同版本的软件包。

用户可以从菜单栏中选择"工具" > "软件包管理工具"打开软件包管理面板。用户可通过软件包列表中的按钮进行:

  • 安装install-button:在线安装软件包,下载软件包至本地并进行解压。
  • 卸载uninstall-button:卸载已安装的软件包,可在有需要时再次安装。

ZCC 软件包

ZCC 工具链默认包含基础扩展的 libzcc,如需要额外的扩展功能,或者为特定领域(如 DSP,NN)提供优化的功能的软件包,可以在包管理器右侧面板中找到相应的软件包并下载安装。 所有安装的 ZCC 软件包都将直接安装进工具链中并应用于全局。

  • libzcc: C 和 C++ 标准库,包括 newlib,compiler-rt 和 libc++
    • newlib:面向嵌入式系统的标准 C 库实现。提供了一组轻量且高效的函数,适用于资源受限的环境。
    • compiler-rt:运行时库,旨在支持编译器的低级代码生成和优化功能。它包含内置函数和例程,用于高效执行编译代码。
    • libc++:提供 C++ 标准库的实现。提供容器、算法和迭代器等旨在高度优化和符合标准。
  • libdsp:提供了一系列专门设计用于数字信号处理(DSP)的函数和工具。
  • libnn:专门用于实现和运行神经网络(NN)算法的库。
安装 ZCC 软件包

第三方软件包

面板左侧从 SoC开发板两个维度进行分类方便用户进行快速检索。在左侧选择相应的 SoC 或开发板型号,右侧软件包将过滤出可安装的板级支持软件包、通用软件包以及用户从本地导入的软件包。 所有安装的第三方软件包将存放在 C:\Users\{User_name}\ZStudio\Packs 目录下,用户可将软件包作为外部依赖添加至项目中进行构建, 请参考添加项目依赖章节。

安装或卸载软件包

软件包管理面板上方的搜索栏允许用户快速检索目标。左侧搜索栏用于快速检索 SoC 和开发板,例如用户输入 N300,将会匹配到所有名字中含有此字段的 SoC 或开发板,如 N300N300fN300fd 等。右侧搜索栏允许用户进行跨类别搜索软件包,例如用户输入 mac 将会匹配到所有含有 mac 字段的软件包。

使用搜索栏快速检索软件包

软件包导入

ZStudio 支持导入本地软件包。用户既可以导入预编译好的库文件也可以导入含有源代码的静态库和项目进行一同构建。

  • Static Library: 将编译成 .a 文件的静态库导入进软件包管理工具。
  • Source: 将包含源码的静态库项目作为软件包导入进软件包管理工具。

导入静态库包

用户导入的 .a 文件静态库包可以在构建时直接链接进项目,无需重新编译软件包,对大型库而言尤其节省时间成本。

  1. 在菜单栏中选择"文件" > "导入软件包"进入对话框。

  2. 指定软件包的根目录,然后在软件包的类型下拉框中选择"静态库(Static Library)"。

  3. 选择 .a 文件所在的目录路径。

  4. 指定软件包的 Arch, ABICPU 参数。这些预填信息能帮助你在项目开发时快速筛选出匹配项目 SoC 配置的软件包。

    导入预编译过的静态库包

导入静态库源码包

用户导入静态库源码包时,实际上是导入了库的源代码。这种方式的优点是在项目构建时可以直接查看和修改库中的代码:

  1. 在菜单栏中选择"文件" > "导入软件包"进入对话框。

  2. 指定软件包的根目录,然后在软件包的类型下拉框中选择"源码(Source)"。

    导入静态库源码包
  3. ZStudio 将自动检测软件包根目录的 Makefile 文件并将其作为入口 Makefile 文件,用户也可以手动选择入口 Makefile 文件的路径。

  4. 添加 Make 参数,并选择当 ZStudio 遇到无法处理的非编译命令时,如何处理这些命令:

    • 在下一条编译命令执行开始前执行。
    • 在上一条编译命令执行结束后执行。
    • 忽略:忽略这些无法判断的命令,不对其进行任何特殊处理。
注意

跨平台导入源码包可能导致将其加进项目依赖一同构建时,出现路径兼容问题,注意 Linux 系统使用斜杠(/)作为路径分隔符;而 Windows 系统使用反斜杠(\)作为路径分隔符。导入前请在 Makefile 中完成路径修改。

用户导入的软件包存放在 Users\{user_name}\ZStudio\Packs 目录下,在软件包管理面板中可以对其进行管理,用户可以将其添加进项目依赖与项目一同进行构建,请参考添加项目依赖章节。

导入的软件包

本地项目导出

ZStudio 中的静态库项目可以导出成软件包在用户本地、其他桌面或云端版本的 ZStudio 中复用。用户可以将其添加进项目依赖与项目一同进行构建:

  1. 项目导航中右键需要导出的静态库项目并在右键菜单中选择"导出为软件包"。

  2. 静态库项目既可以导出为预编译好的 .a 静态库软件包也可以导出为含源码的软件包作为项目外部依赖。

    • Source: 将静态库项目导出为含源代码的软件包方便在复用软件包时修改源代码并对其进行调试。用户可以选择多种配置并指定其中的一种为当前活动配置进行导出。

      导出为含源码的软件包
    • Static Library: 将静态库项目导出为预编译好的 .a 库文件包可以在作为项目外部依赖时直接链接进项目无需再次进行编译。ZStudio 将根据项目配置将 Arch, ABICPU 参数填入项目导出对话框。用户只需指定预编译好的 .a 库文件的路径,一般在 {project_name}\output 项目输出中可以找到该文件。

      导出为预编译好的静态库软件包
  3. 点击"导出",等待导出结束后,右下角弹窗提示结果"成功导出软件包。"

用户导出的软件包存放在Users\{user_name}\ZStudio\Packs目录下,在软件包管理面板中可以对其进行管理,用户可以将其添加进项目依赖与项目一同进行构建。

版本管理

ZStudio 中集成了源代码控制管理的 Git 支持工具,在使用 ZStudio 中的 Git 版本管理工具前,请确保已安装 Git 并且我们默认用户熟悉 Git 的使用方法

初始化存储库

当 ZStudio 没有检测到现有的 Git 存储库时,点击"初始化存储库"启用本地代码的版本管理,初始化后所有本地文件将标记为存储库中的准备暂存的新文件。

初始化存储库

文件更改

左侧活动栏中的版本管理图标会实时挂起用户本地存储库中基于上次同步远程存储库以来更新文件的数量,击图标进入版本管理视图查看CHANGESSTAGED CHANGESMERGE CHANGES的详细信息。

CHANGES 列表显示自上次与远程存储库同步以来已修改的所有文件,用户可以将准备提交的文件添加至已暂存的修改(STAGED CHANGES)。CHANGES 和 STAGED CHANGES 列表中每个文件的更新状态都会在文件右侧标识出来,更改标记分为五种类型:

  • M (Modify):存在修改的文件
  • D (Delete) :已经被删除的文件
  • U (Untracked) :新添加但还未添加至 STAGED CHANGES 的文件。
  • A (added) :新添加并且已经添加至 STAGED CHANGES 的文件。
  • C (Merge Conflict) :当向远程库推送前需要先解决的冲突。

用户将鼠标悬停于 CHANGES 列表的文件上时,会出现三个快捷按钮,从左往右依次为:

CHANGES 列表快捷按钮
  • 放弃修改(Discard Changes):撤回已更改的内容,将文件还原至上次同步后的状态或本地存储库的初始状态。
  • 打开文件(Open File):点击将会在编辑器中打开文件。
  • 提交暂存(Stage Change):将准备提交的文件添加至已暂存的修改(STAGED CHANGES)。

用户将鼠标悬停于已暂存的修改(STAGED CHANGES)中文件上时,会出现两个快捷按钮,从左往右依次为:

  • 打开文件(Open File):在编辑器中打开文件。
  • 撤销暂存(Unstage Change):文件将退回更改列表。
STAGED CHANGES 列表快捷按钮

用户可以使用 list-view-button (以列表形式查看) 按钮和 tree-view-button (以树形式查看) 按钮切换版本管理视图中文件的显示方式。

提交代码

使用"暂存"操作可以控制每次提交包含哪些文件;将用户的所有修改拆分成多个部分,分次提交。 用户也可以随时将 STAGED CHANGES 列表的文件退回至 CHANGES 列表,留待后续提交。

用户可以遵循以下步骤提交代码:

  1. 打开"版本管理"视图,所有的更改将会在 CHANGES 列表列出
  2. 将鼠标悬浮在需要提交的文件上,点击 + 暂存文件;按住 Ctrl 可以一次性选择多个文件添加暂存。
  3. 在对话框中输入提交信息,并点击 toggle-mark(提交)按钮。
  4. 如果要将本次提交推送至远程仓库,点击右上角的 more-action-button(更多操作...)并选择"推送"。
提交及更多操作

用户可以在版本管理右上角的 more-action-button(更多操作...)找到其他常用的选项,包括:

选项描述
放弃所有更改撤回所有已更改的内容,将文件还原至上次同步后的状态或本地存储库的初始状态。
暂存所有更改将所有更改添加至 STAGED CHANGES 列表以便提交。
取消暂存所有更改将所有暂存的更改退回至更改列表。
提交已暂存的文件(修改)更改上次提交(当前所在分支的最新提交)的提交信息或提交内容,此操作将会把 STAGED CHANGES 列表的所有更改合并至当前所在分支的最新提交。
提交已暂存的文件(已署名)signed-off-button (添加"已签署")操作一起使用。为提交添加标签或添加签名,日期和邮箱等信息。
合并分支...将其他分支的更改合并进当前分支。例如将远程存储库的最新更改合并进本地。
拉取将默认远程存储库的最新更改合并如当前本地存储库 (抓取并合并)。建议在没有本地更改的时候使用此操作;如果本地有尚未提交的更改,请使用抓取然后合并。
拉取自...从某个指定的远程存储库(非当前存储库)拉取代码。
推送推送至某个特定的远程存储库(非当前存储库)。
抓取...从远程存储库抓取最新更改,但不会将他们合并至当前本地分支。
应用最新储藏将储藏区的最新修改应用到当前工作目录中,但不会从储藏区删除该修改。
应用储藏...将储藏区的某个修改应用到当前工作目录中,但不会从储藏区删除该修改。
删除储藏...将储藏区的所有修改删除。
弹出最新储藏...将储藏区的最新修改应用到当前工作目录中,并且从储藏区删除该修改。
弹出储藏...将储藏区的某个修改应用到当前工作目录中,并且从储藏区删除该修改。
储藏...将尚未暂存的修改或已暂存的修改保存至临时储藏区。此操作允许 1.在不提交本地修改的情况下切换至其他分支,在需要时切换回此分支并应用或弹出储藏。2.切换分支并将储藏的修改应用于新的分支。

同步

如果远程存储库自上次拉取后已更新,用户必须先拉取远程存储库的更新,然后才能将本地更新推送至远程。

状态栏的同步更改指示器是一个可视快捷按钮,用于显示当前分支自上次同步以来可拉取和推送的更新数量,通过点击状态栏的图标可以进行快捷操作。

同步
  • image-synchronize-changes-push 上箭头:可以推送(push)的更新数量
  • image-synchronize-changes-pull 下箭头:可以拉取(pull)的更新数量

解决合并冲突

当一个文件在远程和本地两个位置都进行了编辑时,进行拉取操作可能导致合并冲突。合并冲突也可能发生在应用或弹出(pop)一个存储(stash)的时候, 如果存储包含的更改与分支上的进一步工作相矛盾,这种情况需要手动解决冲突,确保存储的更改与当前分支的状态一致。

当用户尝试将一个分支合并到另一个分支时,Git 会比较两个分支上的相应文件的差异。如果 Git 发现同一个文件在两个分支上有不同的修改,无法确定应该保留哪个版本的更改时,ZStudio 将弹出合并冲突的警告提示,并将合并冲突的标记<<<<<<< ======= >>>>>>>添加到代码中,并将文件标记为冲突状态,手动编辑文件解决冲突后,文件会直接放置在 STAGED CHANGES 列表中,方便用户进行提交。

解决合并冲突

如图,<<<<<<< 部分是要合并的目标分支,通常是的本地分支,显示了本地修改;>>>>>>>部分是正在尝试合并的提交,通常是远程分支, 显示了尝试合并的远程修改。用户需要决定要保留哪一部分,自行合并这些内容,并移除所有的合并冲突标记。 当用户解决合并冲突后,单击"+"将这些修改添加到 STAGED CHANGES 列表。

创建或切换分支

Git 支持对不同版本的代码创建分支进行源代码管理,在各分支进行的各种修改,拉取和推送将不会影响到其他分支的代码。用户可以在 ZStudio 中直接创建分支,同步远程和本地分支;通过状态栏可快速判断目前正在处理的分支(第一次设置存储库时,默认情况下在 master 分支上)。用户可以通过以下方式创建和切换分支:

  1. 单击状态栏中的当前分支,可切换的分支列表将弹出。

    状态栏中的分支标识
  2. 创建或切换分支:

    • 创建新分支:选择"创建新分支 (Create new branch...)"并输入新分支名称。分支将创建在本地,用户可将其推送到远程存储库。
    • 切换分支:请在列表中搜索并选择现有分支。
    创建或切换分支

用户也可通过命令面板创建或切换分支,使用快捷键 Control+Shift+P 调出命令面板,然后输入 Git: Checkout 命令在下拉菜单选择新分支或进行分支切换。

扩展(插件)

扩展,通常也被称为插件,主要是在 ZStudio 的基础上为用户提供额外功能以帮助更好的进行开发,ZStudio 支持在线安装和离线安装两种安装方式。本节主要描述如何在 ZStudio 中搜寻,安装,使用及管理插件。

在线安装插件

最直接的方式是直接在 ZStudio 的"扩展"视图中搜索和安装插件。

  1. 在活动栏中点击extension-button按钮或者使用快捷键 Ctrl+Shift+X 调出"扩展"视图。

  2. 在"扩展"视图上方搜寻想要安装的插件,所有可用插件都将在 Open VSX Registry 栏下列出。Open VSX Registry 是由 Eclipse 基金会运营的开源插件市场。搜寻结果中会列出每一个插件的简介和发布者。点击可以查看关于该插件的详情页。

    在 ZStudio 中搜索插件
  3. Draw.io Integration 插件为例,点击"安装"按钮, ZStudio 将会从 Open VSX Registry 市场中下载并安装该插件。

  4. Draw.io Integration 是一个在线图形编辑工具,可以帮助用户创建各种流程图和思维导图。下载完成后,新建一个 .drawio 文件并打开,尝试在 ZStudio 中进行使用。

    在 ZStudio 使用 drawio 插件
  5. 用户可以直接从manage-button按钮的上下文菜单中选择安装插件的其他版本,或者不再需要此插件时,点击"卸载"按钮。卸载需要重启当前 ZStudio 窗口。

    安装其他版本或卸载

从 VSIX 文件安装插件

除了在线安装外,用户也可以手动安装 Open VSX Registry 市场之外的 .vsix 格式插件安装包。

  1. 获取 .vsix 格式插件安装包,这里以 VSCode 插件市场的 Rainbow Brackets 为例,Rainbow Brackets 为同一对括号指定一个单独的配色,帮助用户在代码中有比较多的括号时,一眼看出括号的配对关系。

    下载插件安装包
  2. more-action-button "更多"选项的上下文菜单中点击"从 VSIX 文件安装..",并指定安装包保存在本地电脑中的路径。

    从 VSIX 文件安装插件
  3. 尝试在 ZStudio 中使用该插件的功能。从 VSIX 文件安装的插件也将在 Installed 栏下列出,但无法从此处安装其他版本。用户可以在不需要时直接卸载。卸载需要重启当前 ZStudio 窗口。

    Rainbow Brackets 插件