在UE中使用Git进行版本控制

Using Git for version control in UE4

Unreal Editor中提供的Source Control可以通过Git实现蓝图项目的版本提交/版本比对/撤销修改等一些基本功能,远远比不上Git Bash强大,但是BluePrint间的Diff还是很好用的。

在执行UE中的Git版本控制之前最好先在Git Bash中进行一些Git全局的初始化操作。

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

生成SSH Key(邮件地址换成你自己的邮件地址):

1
$ ssh-keygen -t rsa -C "youremail@example.com"

然后一路Enter(或者你自己设置密码),执行完毕后会在C:\Users\${userName}\(linux则是在~/下)下创建一个.ssh目录,其中有id_rsaid_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中的addcommit),然后点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 InDiff 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时间。

全文完,若有不足之处请评论指正。

微信扫描二维码,关注我的公众号。

本文标题:在UE中使用Git进行版本控制
文章作者:查利鹏
发布时间:2016/10/07 23:31
本文字数:1.8k 字
原始链接:https://imzlp.com/posts/7647/
许可协议: CC BY-NC-SA 4.0
文章禁止全文转载,摘要转发请保留原文链接及作者信息,谢谢!
您的捐赠将鼓励我继续创作!