# 版本控制

保持关注Spine编辑器和Spine运行时的版本是使用Spine的重要部分。

# Spine编辑器版本号

Spine编辑器版本号使用`major.minor.patch`格式。例如，`3.8.75`。

当主要版本号或次要版本号改变时，表示与旧版本存在显著差异，应谨慎更新到新版本。

当只有补丁版本号改变时，则表示我们修复了一些错误或做了一些小改进，你可以安全地进行更新。

[更新日志存档](/spine-changelog/archive)提供了我们已发布的所有Spine编辑器版本列表。

# Spine运行时版本号

Spine运行时版本号使用`major.minor`格式。例如，`3.8`。

Spine运行时的源代码在[Spine运行时GitHub存储库](https://github.com/EsotericSoftware/spine-runtimes)中提供。Git分支用于每个版本的Spine运行时。使用GIT提交到分支，而不是补丁版本号。

![](/img/spine-user-guide/versioning/branches.png)

# 稳定版本

稳定版本是指任何不以`-beta`结尾的版本。例如，Spine编辑器为`3.8.99`，Spine运行时为`3.8`。

我们不会对稳定版本进行有风险的更改以减少引入新问题的机会。对稳定版本的更新主要是为了修复错误。

# 测试版

测试版是任何以`-beta`结尾的版本。例如，Spine编辑器为`4.0.73-beta`，Spine运行时为`4.0-beta`。

测试版允许你使用最新的新功能，但Spine编辑器可能会偶尔崩溃或有未完全实现的功能。此外，并非所有Spine运行时都支持从测试版导出。

以下是你可能希望使用测试版的几个原因：
* 你正在导出图片或视频，因此缺少运行时支持对你来说无关紧要。
* 你希望使用最新的Spine功能，并且不介意等待运行时更新。
* 希望了解最新的Spine功能。你可以随时返回到稳定或较旧的Spine编辑器版本，只是**注意不要用较新的版本保存你的项目**。
* 你知道你正在使用的运行时已经更新，可以使用测试版编辑器。有些运行时会在其他运行时之前更新，在所有运行时更新之前，我们不会发布稳定版。每个运行时在GitHub上的自述文件都指定了它兼容的最新Spine版本。

一旦结束测试，Spine运行时的测试版Git分支就会被移除，取而代之的是一个稳定的版本号。

# 选择Spine编辑器版本

当[启动Spine](/spine-getting-started#运行Spine)时，启动程序窗口允许选择使用哪个版本的Spine编辑器。你也可以在[设置对话框](/spine-settings)上设置Spine编辑器版本。

![](/img/spine-user-guide/versioning/version-select.png)

如果启动程序没有停下来让你选择版本，那是因为你之前勾选了`自动启动`。在这种情况下，要阻止Spine自动启动，只需在启动程序窗口首次出现时单击任意位置即可。

## 最新稳定版

如果你在版本选择框中选择`最新稳定版本`，它将运行最新稳定、可投入生产的Spine编辑器版本。

## 最新测试版

如果你选择`最新测试版`，它将运行最新的Spine编辑器测试版。测试版允许你尝试最新功能，但并不是所有的Spine运行时都支持导出。如果当前没有测试版，你将不会看到`最新测试版`选项。

## 具体版本

你还可以选择特定的Spine编辑器版本。你下载的所有版本都会显示出来，或者你也可以点击`其他...`，输入我们已经发布的[任意版本](/spine-changelog/archive)的版本号。

# 同步版本

**用于导出JSON或二进制数据的Spine编辑器的主要版本和次要版本必须始终与Spine运行时版本匹配。**如果不匹配，Spine运行时将无法读取数据。这种依赖性非常重要。

动画师必须通过选择[具体版本](#具体版本)来确保使用正确版本的Spine编辑器。否则，很容易意外更新到较新的Spine编辑器版本。

开发人员必须确保使用正确版本的Spine运行时。要更新到较新的Spine运行时版本并不容易，因为新版本需要下载，旧版本需要替换，可能还需要修复代码。正因为如此，开发人员通常会指定应该使用哪个版本的Spine编辑器。

## 更新补丁版本

将Spine编辑器更新到较新的补丁版本总是安全的，这表示它修复了一些错误。例如，如果你使用的是`3.6.44`，则可以更新到较新的`3.6.53`，而不必担心出现问题或你的导出无法再使用`3.6`Spine运行时。

将Spine运行时更新为同一分支上较新的Git提交总是安全的。例如，如果你使用的是`3.6`分支，则可以更新到该分支上的最新提交，而无需担心出现问题。从任何`3.6.xx`Spine编辑器导出将可继续工作。

## 更新主要版本或次要版本

动画师和开发人员在更新主要版本或次要版本时需要进行沟通，以便同时更新Spine编辑器和Spine运行时。

将Spine运行时更新为新版本的分支后，Spine运行时将不再能够读取旧版本的Spine编辑器中的任何导出。所有的Spine项目都需要使用较新的Spine编辑器版本再次导出。

我们建议使用[命令行界面](/spine-command-line-interface)编写脚本，以自动导出所有项目。这可以根据需要完成，也可以作为构建过程的一部分。

# 项目文件

Spine项目文件是向后兼容的，但不向前兼容。较新版本的Spine编辑器始终可以打开从任何旧版本保存的Spine项目文件。但是，保存项目后，旧版本的Spine编辑器将无法再打开该项目。必须注意不要意外地使用较新版本的Spine编辑器保存项目。

在使用较新版本的Spine编辑器保存项目之前，Spine会显示一条警告。

![](/img/spine-user-guide/versioning/project-warning.png)

## 从新版本恢复工作

如果在一个项目上完成工作并使用较新版本的Spine编辑器保存，则旧版本将无法再打开该项目。如果无法更新Spine运行时以匹配Spine编辑器版本，则工作可能会丢失。旧版本的项目文件可以在[备份](/spine-settings#备份)中找到。

要尝试恢复工作，可以使用[JSON导出](/spine-export#JSON)，并将`版本`设置为旧版本的Spine编辑器。如果旧版本没有新版本中使用的功能，这可能会导致数据丢失。例如，当使用`4.0`导出`3.8`的JSON数据时，所有动画的曲线都会丢失，因为`3.8`缺乏表达在`4.0`中创建的曲线的能力。

接下来，运行旧版Spine编辑器，并使用[数据导入](/spine-import#数据)将JSON数据导入Spine。如果项目看起来正常，请保存它并继续使用旧版本的Spine编辑器。

## 文件存储

Spine项目文件应安全保存，以备将来使用。项目文件始终可以由相同版本或较新版本的Spine编辑器打开。

导出的JSON或二进制文件不是存储的好选择。它们可以[导入](/spine-import#数据)回Spine编辑器，但只能导入到导出数据时的同一版本。如果没有导出[非必要数据](/spine-import#非必要数据)，将数据重新导入Spine会丢失一些信息。导入后，可以保存Spine项目文件，并可以在新版本的Spine编辑器中打开该文件。

如果需要导入大量的JSON或二进制文件并保存为Spine项目文件，可以使用[命令行界面](/spine-command-line-interface#导入)。例如，下面的第一个命令导入使用3.6.51导出的JSON，并将其另存为项目文件。第二个命令使用4.0.10将项目文件导出为4.0.10 JSON。

```
Spine -u 3.6.51 -i input.json -o project.spine --import
Spine -u 4.0.10 -i project.spine -o path/to/exports --export json
```

[下一节: 导出](/spine-export)
[上一节: 欢迎屏幕](/spine-welcome-screen)
[Spine用户指南: 目录]