Unity版本管理从svn换成git的踩的坑汇总

由于项目的需要,被要求全部换成git。但是对于用了10多年的svn突然要求换git,真的不想换,svn挺好的。而且unity那么多大文件git能搞定吗?没法,领导发话了就得换,不换svn就换我。。。好吧,我现在我把踩的坑汇个总。所以此文章会持续更新:
遇到第一个坑就是git不能合并冲突的二进制码、比如unity里面的*.assets、第三方静态库、和luajit等等。但是这个其实无所谓,不能解决冲突就暴力的用我的或者用他们的,这个不存在。不过unity有个地方可以设置unity自带文件文本非二进制,如图所示:
Unity版本管理从svn换成git的踩的坑汇总_第1张图片
在一些高版本unity里面这些都是默认设置,低版本的unity需要注意一下。好像svn也不能解决二进制冲突?不过不管了
再说第二个坑,我不晓得这是坑还是BUG,那就是git不能上传空文件夹,不晓得是我没设置好还是git本身就不支持。大家都知道unity就算你建个空文件夹,会对应在目录下生成一个*.meta文件。于是乎,这个空文件夹上传不了,这个*.meta却上传了。别人拉到版本就是没有拉到此空文件夹,在unity情况下,会把这个*.meta文件删除,然后就悲剧了。解决方案就是要么空文件夹放个东西,要么就忽略*.meta文件。有人会问,为什么项目里会有空文件夹,因为项目初期,预定一些文件夹放一些资源,只是这些资源美术还没有上传。或者开发者和打包者对文件的管理需求也是不一样的,这就是为什么项目里会有空文件夹。
… …
目前就遇到这么多坑,我会持续更新,还有一个针对于unity大文件的管理方案,待我先吧工作环境建好,后面再来踩这坑。
svn转git其实是思维的转变,git注重分支和合并,svn一股脑网上垒。我觉得各有各的好处,在版本过多的情况下,svn就相形见绌。git就有它的的优势了。不过在平时提交的时候,svn直接ci就提交了,但是git各种add commit push一堆操作,真是烦。这就是svn操作简化的优点。好了,这个是仁者见仁智者见智的问题,就过多讨论了,我们来说一下svn的一些指令对应git的一些指令吧:
1.首先建立一个新工程,或者把我们已经有的文件提交上去
svn:
svn checkout …
svn ci …
git:
git init
git add …
git commit …
git pull origin master

2.建立分支
svn:无
git:
git checkout -b dev

3.还原本地修改
svn:
svn reset
git:
git clean -df
git restore ./

4.更新服务器版本
svn:
svn up
git:
git pull origin master
这里我像吐槽的是,git有了分支后面必须带分支参数,但是你晓得我当前分支为什么非要这个?

5.提交版本
svn:
svn ci …
git:
git add …
git commit …
git push …

总结:好吧,目前这些我用的比较多,但是实际上我敲的git指令不止这些,还有一些查看当前分支,查看远程分支,查看日志,查看当前差异状态,解决冲突,合并主干到本分支节点等等。。。不过这些无非是然我吐槽SourceTree真难用,非要逼我敲指令,还是svn好用。让我很难受的是,我的Jenkins里已经写好很多批处理指令,现在全部换成git。其中包括打包资源、luajit、win版本、Android和IOS。都要全部换掉。这才是我最不愿意做的,不过现在已经全部OK,工作流程已经全部建好。

你可能感兴趣的:(总结,经历,游戏,git,unity)