Unreal Editor中提供的Source Control可以通过Git实现蓝图项目的版本提交/版本比对/撤销修改等一些基本功能,远远比不上Git Bash强大,但是BluePrint间的Diff还是很好用的。
在执行UE中的Git版本控制之前最好先在Git Bash
中进行一些Git全局的初始化操作。
1 | $ git config --global user.name "Your Name" |
生成SSH Key(邮件地址换成你自己的邮件地址):
1 | $ ssh-keygen -t rsa -C "youremail@example.com" |
然后一路Enter(或者你自己设置密码),执行完毕后会在C:\Users\${userName}\
(linux则是在~/下)下创建一个.ssh
目录,其中有id_rsa
和id_rsa.pub
两个文件。
id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人(保存到Github/GitLab的SSH Key中)。
更多的Git Bash
下的一些操作可以看这篇文章——Git快速上手指南。
打开UE项目,在虚幻编辑器中点击Source Control
选中connect to Source Contorl
在弹出的窗口中Provider
选项中选择Git
并在Git Path
中填入系统中git.exe
的绝对路径。
选中Add a .gitignore file
,然后点击initialize project with Git
,最后点击Accept Settings
完成初始化。
现在,可以看到Source Control
上出现了绿色的圆圈上有上下两个箭头。
这时我们需要commit
的一次我们的工程(同时也是对所有的文件改动进行提交。在这里因为是初始化,所以需要提交一次所有的文件)。点击Source Control
选中Submit to Source Control
。
在弹出的窗口中填入提交信息(等同于git中的add
与commit
),然后点OK。
Source Control
初始化完成,现在我们可以测试一下。
新建一个蓝图类EmptyActor,只是测试我们写入一个节点。
然后在Content Browser
中右键点击该蓝图类,Source Control
->Check In
对该蓝图类做一次初始化提交
。
在弹出的窗口中填入相关的信息(commit),然后点OK。
现在我们可以再次编辑EmptyActor这个蓝图类,但是我们不提交(don’t check in)。
可以通过diff
来检测我们此次相较于上次提交的版本做了哪些修改:在该蓝图类上右键Source Control
->Diff Against Depot
,会弹出diff
窗口。我们可以看到我们在该蓝图类中修改了哪些东西。
在蓝图类上右键->Source Control
下共有以下几个选项:Check In
/Refresh
/History
/Diff Against Depot
/Revert
,其中Check In
和Diff Against Depot
的用途上面已经说过了。
Check In提交当前文件。
Refresh刷新当前文件(蓝图类)状态(status)。
History查看提交(Check In)的历史,也可以提供当前未提交改动与某一提交版本的区别。
Diff Against Depot查看当前未提交(Check In)改动与上次提交版本的区别。
Revert丢弃当前未提交(Check In)改动(就是回滚到上一次Check In时的状态)。注意:Revert之后需要重启引擎才会生效,这应该是UE(4.12.5)的一个BUG。Revert的效果等同于直接在Git Bash下执行git checkout -- ${filename}
。
UE中集成的Source Control::Git是不能够直接在虚幻编辑器中直接回滚到某一提交版本的,总的来说可供操作的功能还比较少(蓝图的节点比对还是很爽的),但是可以结合Git Bash
来使用Git的其他操作(版本回退/分支管理/远程推送等等)。
需要注意的是,使用Git Bash
来进行版本回退的话一定要关闭虚幻编辑器,因为回退需要对文件进行改动,而虚幻编辑器正在占用(打开)该文件(蓝图类),而对未占用(打开)的文件(蓝图类)进行版本回退也需要重启虚幻编辑器才可以(不重启不会看到回退效果)。
使用Git来推送(push)和拉取(pull)远程分支的话需要在Git Bash中执行。同样也需要关闭虚幻编辑器。注意编辑.gitignore
来忽略不必要的文件来节省push/pull时间。