Git使用
1、为什么需要版本控制?个人开发过渡到团队协作
2、分布式版本控制系统(Git) VS 集中式版本控制系统(CVS、SVN、VSS)
分布式:客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来 (本地库) 。任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。
集中式:都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。‘
3、工作机制:本地(远程库的话再加个push)
4、代码托管中心(远程库):局域:GitLab;网络:GitHub、Gitee
5、常用命令
6、版本穿梭
主要是根据指针指向不同版本(版本号),从而进行版本穿梭
7、分支
- 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支
- 使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行
7.1:分支操作
创建分支的时候已经备份了一份源码
7.2:合并分支后,要注意合并的逻辑:
不冲突:比如:从master分出的branch,然后git merge branch后,master会被branch覆盖,因为branch是从master分出去的。
冲突:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个,必须人为决定新代码内容。
这里的冲突和不冲突其实不太好理解,主要就是要注意执行的顺序:
当master commit之后,再创建branch,之后不动master,即使后面branch commit多少次,都是能成功合并的,不冲突。
当master commit之后,再创建branch,之后master再modify,commit,branch也commit,这时就会冲突。
合并要注意,原分支并不会删除,其实还是指针的变换
8、协作:
8.1:团队内协作:push->clone->push->pull (小团队添加权限即可,这里只有一个库的运作)
8.2:跨团队协作:fork->clone->push->Pull request->审核->merge->pull (跨团队则fork添加别人的库到自己的库上进行修改,这里有多个库的运作)
9、远程库