觉得 git 复杂是因为学习 git 进入了误区。
恰恰相反,和SVN之类过度设计的CVS不同,git在设计上是非常简单的。在极其简单清晰,甚至可以说暴力美学的基础架构之上提供了极大的灵活性——这些灵活性使得 git 有非常多的命令和选项,可以做到许多其它CVS不能做到的事情。
学习 git 不应该从 git 命令和用例开始学习,那样会陷入茫茫多的 git 命令和选项中无法自拔。没有人学习C语言是从学习一万个C语言写成的程序开始学习。
学习 git 的正确方法是先了解 git 是如何设计和实现的,它在磁盘上有哪些文件?分别做什么用?为什么要这样设计?然后自然就知道“当我想做一件事的时候,我需要 git 去为我做什么”。剩下的事情只是要用的时候翻翻相关命令的帮助就可以了,用多了自然就熟了。
免费的 git 书籍推荐 pro git,收费书推荐 git pocket guide,更加简明清晰
Git的复杂度在于:
整个代码管理系统中有3份代码: workspace(IDE中的代码)、本地仓库、远程仓库
在一个分支上,会有不同的user push、pull代码,每个人代码之间可能会冲突。
整个代码管理系统中有N个分支,不同分支之间存在 checkout、merge等操作(SVN也一样)
运用场景:
多个人在同一个分支上开发代码,这是最basic的操作吧。
不同环境的发布,依赖相对独立分支的代码。一个项目要分 dev、test、uat、prod环境,这是最basic的操作,但是要保证 test是基于dev,uat是基于test、prod是基于uat,所以必然存在跨分支的代码管理。
项目要2个相对独立的不同的功能,这两个功能的上线时间也不同,所以如果在一个分支上开发,必然面临A功能ready了,但是包含了B功能的代码,但是B功能的代码还没ready,如果直接上线,有bug,除非等到B功能也开发好,再一起上线。所以在业务上,需要多分支并行开发,然后到某个时间节点,merge不同分支的代码
原文:https://www.cnblogs.com/mintsd/p/13057632.html