Choose your operating system:
Windows
macOS
Linux
通过源代码工作的最大好处之一是,你始终可以获得我们团队为虚幻引擎添加的最新改进和新功能。当我们修改源代码并发布新的官方版本时,我们会不断更新虚幻引擎GitHub仓库的各个分支。你可以定期获得这些更改:也许是每当我们发布新的官方版本时获取,也许是每个月获取,或者甚至是每天获取。
本页面介绍两种不同的方法,你可以使用它们来更新你的分叉的一个分支,使其与虚幻引擎的主仓库中的最新更改保持一致。
选项 1:使用上游远程(Upstream Remote)
在这种方法中,你将Epic Games虚幻引擎的原始仓库作为新的远程仓库添加到你的分叉的本地副本中。它通常被称为 上游(Upstream) 远程。你将更改从上游远程拉取出并放入你的本地分支。然后,你可以将这些更改推回到GitHub上你自己的分叉(通常称为 原始 远程)。
尽管这种方法初看之下比下文选项2中介绍的GitHub拉取请求稍显复杂,但是我们推荐使用这种方法。它有以下几个优点:
一旦设置了上游远程,只要继续使用你的分叉的同一本地克隆,就永远不需要重新设置它。这使得你可以快速、轻松地根据你的项目需要频繁地获取新的更改。
每次使用GitHub拉取请求更新你的分叉时,都会在你的分支中创建一个新的提交,并在你的项目的历史记录中创建一个新的拉取请求。这通常没有副作用,但最好避免这些不必要的条目。
下面的说明介绍了如何使用Git命令行工具添加新的远程并获取更改。如果使用可视化Git客户端,操作步骤应该大致相同。详情请参阅你的工具的文档。
如果使用GitHub Desktop,当你复制你的分叉时,将自动为你创建上游远程。你只需要将来自上游分支的更改合并到你的本地分支中,然后将这些更改推送到原始仓库。
要设置上游远程,请执行以下操作:
请将你的分叉克隆到你的计算机上(假如你还没这样操作的话)。
打开命令提示符,导航到包含你的仓库的文件夹。
将Epic Game的基础仓库添加为一个新远程,名为"upstream"。
> git remote add upstream https://github.com/EpicGames/UnrealEngine
如需将来自上游远程的更改合并到你的分叉中,请执行以下操作:
检出要更新的分支。例如:
> git checkout master
将更改从上游远程拉取出并放入你的本地分支。
> git fetch upstream > git merge upstream/master
将更改推到你的原始远程。
> git push origin master
选项 2:使用GitHub拉取请求
在Web浏览器中,访问github.com并前往你的仓库主页。
这通常遵循https://github.com/<username>/UnrealEngine
格式,其中<username>
为你的GitHub用户名。从 分支(Branch) 控件中选择要更新的分支。
点击 比较(Compare) 链接。
通常,只要你还没有在你的分叉中对该分支进行更改,GitHub就会告诉你Epic Games仓库已经拥有来自你的仓库的所有提交。
点击用于 切换Base(switching the base) 的链接,该链接将反转比较,并显示在引擎仓库中而非在你的分叉中进行的提交。
查看一下更改列表。如果显示的日期与符合你的期望,请点击 创建拉取请求(Create Pull Request)。
输入一个简短的描述,说明你的拉取请求正在更新的分支。完成后,点击 创建拉取请求(Create Pull Request)。
GitHub显示新的拉取请求的对话(Conversation)选项卡。在更改列表的底部,点击 合并拉取请求(Merge Pull Request)。
点击 确认合并(Confirm Merge)。
合并完成时,你的分叉分支在GitHub上将是最新的。现在,你可以使用Git命令行或你选择的可视化工具来迁出分支并将最新更改拉取到本地计算机。
选项 3: 使用Perforce
流送工作流
以下流程图通过开发到发布期间不同类型的Perforce流送,阐明了引擎代码和内容的工作流。
集成、合并和分支
在游戏制作周期中,你的团队可能会定期将新版本引擎中的内容合并到项目中,这些新内容包含新功能和bug修复内容。从Perforce库获得更新版本的过程与初始同步相同。不过,你需要从多方面仔细考虑如何在Perforce服务器上维护引擎,并考虑这会如何影响你将新版本合并到代码库中并减少冲突的能力。
合并和集成
我们推荐使用类似于以下层级的结构:
分支 |
说明 |
---|---|
|
包含Epic基本代码的原始副本,无修改。 |
|
用于将Epic变更和引擎变更合并的准备区域。 |
|
将引擎发布版本与基础代码合并并通过集成测试后,需在此开发树中进行使用。 |
升级到新引擎版本
从支持团队处获得Perforce访问权后,可在Epic获取引擎发布版本的内容。以下为获取新版本的方法:
在Epic的Perforce服务器同步最新引擎版本。
在自身Perforce服务器同步
//depot/Epic
分支。删除本地
//depot/Epic
工作空间中的文件,并复制粘贴新引擎版本中的文件。用P4V的协调离线工作功能创建变更列表(CL),显示Epic的更新。
完成协调操作后,迁入之前创建的CL。
目前,Epic分支是引擎发布(Engine Release)版本的副本,其中包括集成历史记录,同时提供合并工具变更信息,有助于在基本代码中合并和集成最新引擎更新时减少冲突。
将最新开发分支(
//depot/Dev
)合并到合并/测试分支(//depot/MergeTest
)中。将最新引擎版本合并到合并/测试分支(
//depot/MergeTest
)中,并测试变更。将合并/测试分支(
//depot/MergeTest
)中的游戏更新版本合并到开发分支(//depot/Dev
)中。
下图展示了发布新引擎版本时,分支之间的预期变更流程:
更新越频繁,发生严重合并冲突的可能性就越小。