unity版本控制PlasticSCM转git
这篇适合用惯了scm的要换git的同学看。之前一直是用的unity自己的版本控制软件,最近要用git,还是比较习惯图形化界面,所以用了SourceTree(只是提供一个图形化界面,内里还是git),文档在这
Get started with Sourcetree | Sourcetree | Atlassian Documentation
想着对比着理解应该好理解一些。
git对本地仓库的文件有四种状态,git:local、add(进暂存区)、commit(使head指向要提交的内容)、push(上传到云端),观察scm的工作流会发现缺的是commit这一步,scm会自动指向要提交的内容。个人推测是因为git可以在本地存多个节点,所以多了commit这一步,这样方便在本地回退

(图源git 简明指南)
并且scm会自动add到暂存区,git需要手动add
另外git里的推送对应着签入(check in)
检出(check out)一定要慎用!!!它会使用你提交到Head的东西覆盖你工作区对应文件未暂存的本地改动,而如果你的本地改动并没有被添加到暂存区,那恭喜你,你再也找不到它了,在你不确定你的head里是哪个版本提交的东西时,别用它。(血泪史TAT)
最需要区分的是,sourcetree的分支图和plasticSCM的显示逻辑不太一样,sourcetree如果多个分支处于才合并过的状态时,这几个分支会在合并的节点拧成一条线。而plasticSCM的树状图并不会因为你在哪个节点而发生形状改变(默认来说)
一、创建项目
两种方法
1.先在本地创建仓库并推送到云端,再在本地仓库所在位置建立项目https://juejin.cn/post/7255720279934828599
这个方法没试过,相当于就是创个文件夹再往里填东西

2.已有项目上传到云端仓库
我没有在sourcetree里找到对应的命令按钮,所以我直接在项目文件夹里打开gitbash然后init了
进去输入git init就行
然后打开sourcetree,找到add,填好信息添加就行了

成功后会直接弹出一个界面

这时候打开你的github应该就有仓库名了,但是里面是空的,因为我们还没推送任何东西进去。
回到sourcetree,我们不需要把所有的文件都进行版本管理,比如说Library文件,这种会自动生成的文件不需要进行管理(拿不准哪些需要忽略的同学可以看看plastic的处理方式),图里这几个都可以忽略。logs和.csproj也可以忽略,勾漏了。有temp的话temp也可以忽略,总之就是比着plasticscm的来不会出问题

右键后点忽略就行。

要忽略的忽略完了点暂存所有即可


注意,此时它仍旧在本地,我们需要点击提交

提交完成后再点击推送

会发现推送一直转圈,因为没有设置远端,点远端设置一下


复制自己的url地址

再次点击推送

推送成功后打开自己github/lab ,就有东西啦
ps.如果推送时出现这个报错是因为连不上服务器,多试几次总有能连上的时候。
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --set-upstream origin master:master fatal: unable to access
二、推送更改
对项目进行了一定修改后,需要推送更改,流程和创建项目差不多,就是暂存->提交->推送,在暂存的时候记得看一下有没有自己并没有改过的文件,这类文件可以给它恢复一下,没必要提交
(随便点的一个文件举例,不是必须恢复的意思)
黄色icon是修改过的意思
提交完以后就推送。不推送是不会传到云端仓库的!看这个图谱,你可以多次在本地暂存提交而不推送,那么这些节点就只会留在你的本地

右键还可以回滚提交(回滚会再创一个节点),这些都是在本地进行的

另外还可以直接重置


软合并:会回到暂存选中节点后所有节点改变的东西的状态
混合合并:会回到未暂存选中节点后所有节点改变的东西的状态

强行合并:相当于scm里切换到该节点并删除该节点后的所有东西
推送后也可以这样回退
三、从其他分支合并到主线
情景是我在其他分支,那么这时候应该先提交推送(可以不推送)自己的更改,然后左键双击主分支切换到主分支(即检出),再右键自己的分支选择合并至当前分支,合并时勾选提交,然后推送,这样就合并成功啦。


比较好的习惯是合并后切换到自己的分支,再将主分支合并到自己的分支(也就是拉取远端更新)
注意点:
- merge 分支合并,合并后仍需要像scm一样再签入(push)一次,和scm一样,冲突了会提示你哪些冲突的,手动修复就行,右键冲突的文件选择使用我的还是他们的。处理完以后再次点击合并即可
- 各个分支其实在本地都有存储,切到其他分支a时提醒拉取是把远端的分支a的更新拉取到自己的本地分支a,相当于如果有abc三个远端分支,你的本地也有这样三个分支,你需要手动拉取以将远端分支同步到本地
- origin是远程仓库的标识,可以自定义,也可以拥有多个远程仓库(每个远程仓库使用不同标识,不得重复)he

- 从分支A合并到分支B的操作其实是把分支A上所有的节点所做的更改累加起来合到分支B形成下一个节点,如果只想把分支A的某节点更改项合到分支B,应该使用遴选
四、 将分支A的未推送的更改移动到分支B
暂存后点贮藏(stash)

点贮藏后出来这个,一般选保留暂存的更改,勾上后面两个的话会把你整个项目都存一份,没必要且费时间。描述信息可填可不填

点确定以后可以在贮藏那里看见存的东西

现在就获得了一个在分支A的干净的工作区,切换到另一个分支B,再右键点击应用贮藏区就可以把更改从分支A移到分支B啦

五、删除一个已推送的节点
一般不建议这样做,比较好的做法是点击回滚产生一个新节点(已复原)推送。


六、回滚特定文件到其他分支版本
假设我们现在在分支A有一个脚本文件test.cs,需要使用分支B版本的test.cs,那我们可以右键分支B,点击与当前对比

- 改部分:找到test.cs后点击回滚(可以只回滚行也可以整个回滚)即可在不切换分支的情况下完成修改

- 改部分:最稳妥的方法是打开选定版本文件对比着手动改
- 改全部:右键重置到提交

注意:以上操作都是我身处分支A,选择分支B的变更文件后进行的操作
更多推荐
所有评论(0)