1.软件版本
Unity版本 2019.2.14f1
git-gui版本 0.21
git 版本 2.20.1.windows.1
Notepad++(推荐)不要直接用记事本修改各类文本格式的文件
2.一次性设置
2.1.防止“Updating the Git index failed”
详情:Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui
解决方法:
(1)在目标文件夹 - 右键 - git Bash
(2)输入config --global core.autocrlf false
事后发现这个是针对其他“Updating the Git index failed”现象的(windows/Mac)
Unity有其自身的解决方案
解决方法:见Unity设置-3.
2.2.Unity设置
参考了这位博主
新建项目后,在 Unity 编辑器里选择 Edit -> Project Settings -> Editor,在 Inspector 里面做以下设置:
- Version Control - 设置为 Visible Meta Files,这样 .meta 文件就可以添加到版本控制中。在提交新文件时,其对应生成的 .meta 文件一定要一起提交。如果你不这么做很多时候在运行时是没问题的,是因为 Unity 对这些没有找到 .meta 文件的资源会本地再创建一个。问题是 .meta 文件中有一个重要的东西是该资源的 UUID,Unity 用这个值来定位这个资源。如果两台机器上 .meta 文件不一样,会导致 Unity 找不到某个资源。
- Asset Serialization - 设置为 Force Text,这样项目中像 prefab 和动画等文件会以纯文本格式保存,在看修改的 diff 时会比较好用。
- 建立 .gitattributes 文件。在 Windows 上默认 git 配置会自动将文本文件中的 \n(LF)转换成 \r\n(CRLF),但是 Unity 保存文本文件的时候总是使用的 \n。这样有一个问题就是你修改了 .meta 文件以后就算再变回原来的设置,git 里面也会显示其被修改过了。因为 git 认为他是文本所以把里面的换行改成了 \r\n,但是 Unity 保存资源的时候又写的是 \n,这样 git 又认为它变了。在项目根目录建立 .gitattributes 文件如下:
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto
# keep lf on unity files
*.asset text eol=lf
*.meta text eol=lf
*.prefab text eol=lf
*.unity text eol=lf
*.controller text eol=lf
*.anim text eol=lf
*.mat text eol=lf
*.preset text eol=lf
将所有报错的文件格式都添加
例如:“Updating the Git index failed”里有 abc.XXXX报错
那么就在 .gitattributes文件里再加一行 *.XXXX text eol=lf
码云加入项目
Git创建SSH KEY
- 右键任意文件夹 Git GUI
- Help-Show SSH Key
- 若无SSH 则按 Generate Key 然后复制
若已有SSH 直接复制
码云端设置(添加个人SSH Key)
-
确保自己成为码云的一个项目中的管理员/成员
-
如下图
接下来就可以进行项目的Clone Pull Push了
用Git GUI协作管理项目
Git一般分为三步、Clone(第一次需要)、Pull(下载)、Push(上传)
Clone
Clone Master分支
第一步 任意文件夹右键(文件夹内无.git文件夹) Git GUI
第二步 打开码云项目页面 点击克隆、复制SSH
第三步 将复制的SSH黏贴到Source Location
Target Directory内填入目标文件夹(不能是已有的文件夹)
第四步 点击克隆
Clone其他分支
上面这的Clone过程 Git只会默认Clone Master分支
Branch——Checkout 可以发现Local Branch中确实只有master一个分支
如果还想要克隆其他分支 就得进行额外的操作
第一步
Branch——Create
第二步 如下图
成功 可以看到Checkout里面已经有dev了
Pull
1、Remote——Fetch from ——origin(或者其他名字)
2、Merge——Local Merge
成功
Push
1、修改本地文件
2、Rescan 发现本地文件进行了修改
3、Stage Changed 将工作区内容保存到暂存区
4、点击Signoff 并添加备注
5、Commit 提交 ----Push
注意分支名称对应
成功
无法Push
若出现如下情况 则说明云端项目文件与本地文件不同
需要先Pull 再Push
Pull的流程请参考上文