【Git】Git在Unity中使用时的问题记录
个人向笔记。
(为什么没截图,因为公司电脑没法截图!)
1 前言
主要记录在使用Git协同开发时的各种问题,方便以后查阅。
2 记录
2.1 合并冲突
git pull下来后直接给合并了,麻了。若不想直接合并应该先把分支git fetch下来,需要合并再git merge。回到问题,发生冲突后命令行标题的分支后面会有Merging的表示大概是这样:
xxxxx xxxx /xx/x/x/x/xx/x/x/x/x/x (分支名|MERGING)
$
这就是冲突了,需要我们去手动解决冲突,所以分支处于Merging状态。
2.1.1 取消合并
我们可以选择输入
git merge --abort
来终止这次合并,还原为没有合并的状态,但拉取的分支还是存在,只是取消了合并操作。
2.1.2 处理冲突合并
我们也可以选择去处理分支,输入git status查看状态,其会列出有哪些文件冲突了。之后去编辑文件即可,可以选择直接在目录中找到文件选择合适的方式打开它来编辑,或者在命令行界面通过vim命令编辑:
vim <路径/文件名>
里面通常会有git添加的"<<<<<<<<<"、"==========="、">>>>>>>>>>>"标识,以"======"为分界,前面的内容是本地修改内容,后面的内容是拉取修改的内容,这两块内容即是我们与拉取冲突的内容。最简单的方法是,删除其中一块内容(git添加的标识也要删除),保留其中一块,即二选一。或者选择两者都保存,即合并在一起,但是!合并并不是说把标识一删就完事,对于简单内容,我们可以直接删除标识,保留两份内容,但也有复杂的情况不能简单这么做,接下来举例说明:
比如先有.txt文件:
AAAAA
FFFFF
ZZZZZ
我们这里假设这种情况:上为AAAAA,下为ZZZZZ,再加上中间的内容,才是一个有效内容。
人员A,修改文件为:
AAAAA
11111
ZZZZZ
人员B,修改文件为:
AAAAA
22222
ZZZZZ
那么,当A提交后,B拉取时发生冲突,此时文件将显示为(标识大概是这样,我做了简化):
AAAAA
<<<<<<<<<<
22222
==========
11111
>>>>>>>>>>
ZZZZZ
那么人员B开始处理冲突,A和B商量后决定都要保留,但此时回顾上面我们说的假设情况,那么可知,A想要的内容是三行,而B想要的内容也是三行,他们俩的内容合并在一起应该是:
AAAAA
22222
ZZZZZ
AAAAA
11111
ZZZZZ
三行为一组,前后顺序这里无所谓。如果我们对冲突文件编辑,只是把标识删除只能得到:
AAAAA
22222
11111
ZZZZZ
那么我们只是得到了一个错误的文件。这就是前面所说的,存在复杂情况,这种情况下不能简单的删除标识来合并。针对这种复杂情况要了解文件内容的编排原理是什么,然后结合文件内容、冲突内容,进行调整合并。 个人觉得这种复杂合并很容易出错。
在处理完文件后,提交到暂存区(git add .),然后再提交本地仓库(git commit)即可。
2.1.3 不处理冲突合并
直接提交到暂存区(git add .),然后再提交本地仓库(git commit)。这样文件就会以Git加上标识的状态直接被提交,基本程序是必出错的。
这种情况适合于说这个文件冲突了,但它是可以随时删除,或者本地重新生成的,所以我不处理它们的冲突,直接合并,之后我把这些文件再删除掉,或者本地重新生成。
这种算是少数情况了。
2.1.4 警惕特殊文件
还存在一些特殊文件,比如二进制文件,冲突后真是没法处理,有些都没法识别文件里的内容哪里冲突了。
要尽量避免这种文件的冲突,因为真的很难处理。我目前对于这种不能编辑的都是直接“不处理冲突”,然后把合并后的文件删除,换份新的。
3 后记
暂时这些,有了再补。