版本控制¶
来源信息
- 原文仓库:github.com/Bedrock-OSS/bedrock-wiki
- 许可说明:以原仓库或原站点公开许可声明为准。
译文信息
- 原文:https://wiki.bedrock.dev/meta/version-control
- 作者或组织:Bedrock OSS
- 许可:知识共享署名-相同方式共享4.0国际许可协议(CC BY-SA 4.0)
版本控制的核心概念,是定期备份代码迭代版本,以便在需要时回滚到特定版本。最基础的版本控制,可以通过每天把附加包打包成.zip并上传到网盘来实现。这并非不合理,但存在三个显著缺陷,而专业的版本控制系统能够有效解决:
- 版本差异比对困难。
- 回滚到旧版本的操作繁琐。
- 对团队协作几乎没有帮助。
本文将介绍git工具的基本使用方法,以及免费的在线GitHub托管服务。任何人都可以跟随学习,但如果你身处团队协作环境,或经常因忘记备份而丢失工作成果,这些内容会尤其有用。
本文不会直接教授git或GitHub的基础操作,因为这些知识已有更好的外部资源可供学习。重点会放在掌握基础后,如何针对Minecraft项目进行工具配置。
Git¶
git是安装在本地计算机上的版本管理工具,可对文件进行版本控制。你可以通过简短信息(例如“修复驯服后龙无法飞行的BUG”)提交(commit)文件变更,查看完整修改记录,并快速回滚到特定版本。
Git功能强大,也是主流编程项目的标配工具。它在Minecraft开发中的主要缺点是学习曲线较陡。请保持耐心,循序渐进。
完整的git学习可以参考git官方教程。
GitHub¶
GitHub是git项目(仓库)的在线托管平台,允许多人同时协作开发。这对于地图制作尤为实用。通过GitHub托管,你还可以选择公开代码,更方便地向世界分享自己的附加包。
完整的GitHub学习可以参考GitHub入门指南。
术语自测¶
如果你已经读到这里,希望你已经注册GitHub账号,并对git有初步了解。以下术语会在后文中频繁使用,若不熟悉请自行查询:
- repository(仓库)
- branch(分支)
- commit(提交)
- GitHub
- git
Git环境配置¶
本节假设你要将已有项目加入git管理。新建项目的流程类似。
目录结构¶
在附加包开发中使用git的主要问题是:git通常通过管理单个文件夹实现版本控制,而基岩版附加包资源分散在BP和RP两个文件夹中。为解决这一问题,我们通常将仓库完全置于com.mojang文件夹之外,并使用Windows符号链接(junctions)实现文件夹映射。
将项目置于独立位置有以下优势:
- 可自由添加配置文件、工具、笔记、
.bb文件等附加内容。 - 可将
RP和BP整合至同一仓库。 - 所有项目可在统一位置查看,避免深埋于
com.mojang目录中。
创建Git仓库¶
为项目选择合适的位置。示例使用C:/sirlich/projects。新建一个以项目命名的文件夹,示例项目名为wiki。
右键点击文件夹,选择Open git Bash。若未显示此选项,可通过开始菜单打开git bash并导航至项目目录。若未安装git bash,请先安装。
输入命令:git init。这会在项目中创建空白仓库。
链接现有RP和BP¶
接下来,通过创建Windows符号链接让仓库识别你的RP和BP文件夹。符号链接相当于文件系统的虫洞,使文件看似同时存在于两个位置。删除、编辑、添加操作都会实时同步。
输入命令:
mklink /J wiki_RP "C:/path/to/RP/in/com/mojang"
mklink /J wiki_BP "C:/path/to/BP/in/com/mojang"
完成后,项目文件夹中会出现wiki_RP和wiki_BP目录,其中包含所有现有资源文件。
此时可以按照前述教程将仓库推送到GitHub。
附加文件¶
由于我们通过符号链接创建仓库,因此可以在项目文件夹中添加任意文件而不影响com.mojang目录。推荐追踪.bb文件、封面设计文件(如.kra格式)等。
还可以添加笔记、视频文件等需要版本控制的任何内容。
版本控制系统的使用规范¶
使用版本控制系统时,应牢记以下要点:
- 开始工作前务必先
pull拉取最新版本。 - 频繁
commit提交并push推送。 - 结束工作前必须
push推送更改。 - 若文件严重损坏,可随时重置到最近可用版本。经常提交和推送能最大限度减少损失。
- 必须编写规范的提交信息,这在需要回滚时至关重要。
::: code-group json [示例符号链接] mklink /J demo_RP "C:/Users/Steve/AppData/Local/Packages/Microsoft.MinecraftUWP_8wekyb3d8bbwe/LocalState/games/com.mojang/development_resource_packs/demoRP" :::