嘿,来自互联网的朋友们! 👋

又一周,又一篇文章! 这将涵盖我的宠物项目Ghent Theft Auto中源控制系统的各种用途,更具体地说:Git版本控制。
大约一年前,我才开始使用源代码控制,甚至在开始整个编程之前,就已经非常天真地寻找备份和托管在单个解决方案中。
在托管静态网站之前,我曾与Github Pages合作,但对Git的庞大规模和强大功能一无所知。 到目前为止,我发现了跟踪方面的新用途和优势,嗯,东西!
认真地说,如果我可以控制自己的生活,请随时注册我的屁股。
我开玩笑的是Naaaaah:
我进入Git是因为我以为我在终端提示中输入git commit -m "yeah baby"
类的东西时看起来很酷 。 🤓

在处理大型二进制文件时,狂热者可能会因使用基于文本的源代码控制而生气(或至少皱眉)。 虽然使用版本控制来跟踪3D文件肯定有一些缺点,但我觉得它们实际上是一件好事。 在担任Arch Viz艺术家的第一份工作中,我学到了许多“马虎”和高聚习惯,而在地图上使用Git的局限性确实帮助我掌握了对硬件,软件的影响,在某些情况下甚至包括制作和发布时对网络的影响呈现3D内容。

如果您坚持要学究,请不要担心:存在基于ASCII的3D格式,例如.STL文件。 Github允许您在其Web界面中呈现这些格式,即使该格式使用起来非常麻烦并且甚至缺少最基本的功能(如平滑组或材质ID)。 ♂️

问题
当我偶然发现问题跟踪时,我开始将其广泛用作个人高级待办事项列表和时间跟踪器。
通过思考问题,您可以在编写一行代码之前预先计划,定义范围和体系结构。 称之为问题驱动开发,有时您可能会在未来几个月内进行计划。
预先分配数百张票,快速汇总成大量积压订单,笼罩在您的头上是一种受虐狂的感觉。
另一方面,正是这种自我折磨,可以帮助您确定哪些功能值得那些宝贵的时间!

将问题分配给里程碑可帮助我设定目标,例如努力实现有关根特盗窃汽车(Ghent Theft Auto)最难以捉摸的工作之一:可交付的首个多人游戏演示。
无论如何,项目使您可以对问题进行分组,帮助您封装开发并了解功能的更大影响。
最后但并非最不重要的一点是,功能分支的实践进一步使您能够隔离开发工作,避免破坏版本和不相关的错误。
完成后,将功能分支与引用您分配的问题的提交消息集成在一起,这将自动关闭它。 ♂️

子模块
子模块是我最近的Git发现,我喜欢它们的每一秒。 我习惯了使用子模块,因为我们将它们用作In The Pocket中Unity项目中管理通用代码库的解决方案。 我们使用子模块作为临时解决方案,因为Unity的软件包管理器仍通过Git来解决第三方依赖性。 手指在2019.1 crossed
长话短说:子模块的作用类似于存储库中的存储库,您可以在其中将子模块指向特定的提交。
在使用子模块时对您强制执行的结构使您不必考虑要实现的范围和体系结构。 当从字面上,物理上拆分代码时,封装代码,强制执行单一职责原则和避免循环依赖变得更加容易。
您的项目不再是一个繁琐的整体blob,而是变成了一个由相互交错的即插即用组件组成的网络,这些组件可以配置为其他版本甚至是全新的项目。
例如,如果您开发了一个视频游戏,其中包含了玩家驾驶汽车的能力,那么您将无法停止开发分离的功能(即作为独立的子模块),然后再将其包含在其他作品中。 额外的好处是,当您在以后的产品中改进或扩展代码时,从理论上讲,更新原始存储库可以像更新子模块一样容易。
同样,您为用户输入编写的代码可以集成到一个公共子模块中。 该模块将由您的所有项目共享,从而简化代码并允许您将新的最佳实践和从其他项目中学到的经验教训快速集成到新旧项目中。
我喜欢这种“ 种下种子 ”或“ 付诸东流 ”的开发方法,因为我觉得它提供了迭代的所有优点,而没有缺点。 🌱
另一个主要的附加好处是它们如何与Unity的打包系统交织在一起,但这实际上是一个不同日期的故事。 😉