Git操作步骤图解_Sourcetree
Git操作步骤图解_Sourcetree
- 自从被GitKraken的免费7天骗了之后,我突然觉得Sourcetree应该挺香的
- 先去下一个Sourcetree,建议第三方加速,不然慢的一
(一)前戏
- 下载之后打开

- 它会让你注册,你就点这个注册Bitbucket,不过上网要科学
- 网页上的内容就是一般的平台注册,英文阅读障碍可以用下翻译,这里不演示了

- 就假装到这一步了

- 会让你选插件,当然是全都要

- 然后就是下一步下一步
- 应该会提醒链接你的Github账号,这时就可以链接一下
- 突然弹出这么一个框,因为现在还没有SSH(st专属的版本),就点否

- 然后第一件事就是整SSH

- 英文界面不要慌,Generate(生成)一下
- 然后
Save public key
和Save private key
保存到C:/Users/user/.ssh
里,格式是ppk - 记得重命名不要覆盖之前已经有的密钥
- 如果完事后没反应可以加个载(Load)

- 然后进入选项

- Theme(主题)可以换成黑的(护眼)
- 还可以检查一下SSH有没有配置好

- 换到Git选项卡,把底下的
启用强制推送
开起来

- 芜湖,配置成功
(二)怎么用
如何高效导入Unity工程
- 现场来做个示范吧
- 比如说一个Unity工程的步骤存档
- 先在Github上弄一个仓库,网慢修改Host(无情)

- 这里复制仓库地址(经典操作)

- 点击标签页的加号,再点克隆(Clone)
- 填入仓库地址,本地文件位置,本地仓库文件夹名

- 打开慈祥的Unity,在本地仓库里新建工程

- 这时Sourcetree躁动不安
- 骚粉和紫色就是无效区和暂存区,无效区包含Git未托管的文件以及各种各样的修改了的文件,文件需要暂存了之后再来保存成版本
- 青色是版本提交区,可以写一些版本描述
- 绿色是检视面板,
分支
是本地的分支,远程
是服务器的分支

- 点击暂存所有,文件就都跑到暂存区了(报红就关一下Unity再暂存,当然也可以不关)
- 作为工程的起始,保存成
版本初始化
,好了提交

- 本地存档了,但万一本地坏了,就应该去奢求上传服务器远程
- 点击上头的推送
- 这个意思是将本地
main
分支下的存档投递到服务器Github上的main
分支 - 如果远程与本地有出入,本地想覆盖远程,可以勾选强制推送
- 由于Unity空工程有个50M,初始化需要投递一定的时间(1分钟)

- 切换检视面板到
History
,查看历史版本 - 发现在刚创建的初始版本之前,Git还创建了个版本,不用管它

- 如果创建版本感觉后悔,可以选择追加修改(仅最后提交的版本)
- 这里我加入了DoTween插件

切换到文件状态视图,暂存,一条龙
选择
修改最后一次提交
,在弹出框里选是,再提交,再推送(要强制推送)这样就修改了刚提交的分支

- 但是我突然发现Unity里文件一大堆,主要是配置文件,如果Unity版本不一致会出很多Bug,所以Unity工程需要多余的配置
- 所以删掉我们刚才的版本存档,我们重新来过(不要真去删文件啊)
- 右键原始版本
Initial commit
撤回分支,再强制提交

- 回到文件状态视图,发现Git并没有删除原工程,只是将暂存退回了

- 这里在网上(gitee)找到一个
Git忽略
文件,用来控制Unity忽略什么类型的文件
1 | [Ll]ibrary/ |
把它保存成
.gitignore
,删除文件拓展名,对,它就叫这个- 这个文件也可以自定义,比如:
*.psd
指所有psd不予暂存test.*
指所有叫test的文件不予暂存test.psd
指这个文件不予暂存
保存到仓库根目录

- 选择这个忽略文件,暂存所选,单独为这个文件保存成一个版本,推送远程
- 再来暂存Unity工程,保存成版本,推送远程

- 前往Github,来下载这个分支,发现这个文件贼他马小,说明它不包含Unity本地的配置信息
- 小到1M,压缩后300K,难以置信

我不相信这个上传的文件是不是正常文件,事实胜于雄辩,版本需要检验
于是我重新克隆了一下服务器到本地,重新打开Unity

- 草了,东西一分不少

- 回想一下,如果没有忽略文件,上传的Unity空工程将高达50M
分支
回到原来的仓库,顺便把测试用的仓库删掉(无情)
随便加点东西(一直转的立方体)

- 保存,暂存,版本(想必也会了)
- 这里多做了几个版本,不展示了


- 来介绍一下这是什么意思 ↑
- 正如图谱所示,这个仓库的版本是直线式的,没有分支
- 如果做到版本5,也就是上材质这一步,开始做出不一样的变化,就需要使用分支
- 我们从版本4支出两个分支,一个橙色材质,一个蓝色材质
- 因为本地Main分支呆在版本5上,如果我回退到版本4,版本5就将会被移除,就必须得用gitbush指令才能调出来,所以,在版本5创建一个分支,用来“钉固”版本5的存档(这句话很重要)


- 可以发现,版本5上停了两个分支(可以比作图钉)
- 双击左边检视面板的分支1,确保当前位置在分支1而不是main上
- 可以猜到,版本1上的两个origin是服务器上的分支,因为我们还没有推送上去
- 右键版本4,重置分支1的位置

- 修改Unity,将材质调成蓝的

- 暂存,保存成版本6

这样就一目了然了
Git遵循这些定理:
- 如果存档是直线式的,必须保证最后版本上至少有一个分支
- 如果存档是叉树式的,必须保证该叉树上的最后版本上至少有一个分支
- 开辟叉树的时候一定要新建一个分支,用来保护这个叉树
双击左边检视面板的某个分支,Unity会自动跳转到分支下的版本的样子
问题又来了,我只想查看每个版本里的文件,不想建那么多复杂的分支怎么办
可以在想要跳转的版本那里右键,检出

- 会提示一个信息,意思是:你只能停留在分支上,而检出时会创建一个叫
HEAD
的标签,来替代停留的分支,如果再双击左边检视面板的某个分支,你就会跳到分支上,HEAD
就会被移除 - 它的提示里有一句话很重要:“除非你后面创建一个新分支”,提示了如果检出,想要在检出上发展新版本,就必须要新建个分支来保存这个版本


- 因为Git控制了工程版本,Unity也会做出反映,要你重新加载(现在在版本3)

- 新建分支2来保存

合并
- 这里还有一个合并的功能,但是在这里不太顶用,但是在修改文本文件时还算可以
- 双击main分支,点合并,这里选择与版本7合并

- 它一定会提示你发生冲突,没有冲突的情况特别少

- 点击未暂存文件夹,右边就可以看见冲突代码
- 如果单说是脚本修改的话,那还好说,因为它用这种方法来表示冲突:
1 | + <<<<<<< HEAD |
- 只留下需要的代码,这些等号和尖括号什么都要删掉(好他马奇怪)
- (如果不想要这些合并纠错,可以点顶上的丢弃)

- 于是我把等号和尖括号都删掉了
- 而且事实证明,在vscode里这种东西更好修改(但是vscode没有很图形化的git表达)
- 比如说要保留某一方的修改或者保留双方时,按个键就行了(这才是可视化)
- 所以推荐这个vscode(vscode天下第一!)

- 这时我们提交以下这个合并,让这个合并保存成一个新版本

- 很明显,左边的图谱很直白了,版本3和版本7合并了
- 但是Unity报错了,说明这种场景文件的冲突不要乱合并,因为这种代码不是给人看的,所以要避免这种非代码的合并 (但Unity里至少有些效果)

- 回退这个合并的气人版本,再丢弃合并信息

- 最后我们再推送上去(分支要一个一个推)

- 就是这么用的

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Iamsleepingnow 世界!