Git 分布式版本控制系统(项目 / 代码管理系统)
版本控制
什么是版本控制
- 版本控制:对每一次改动后的项目进行保存和管理
- 作用:当多人共同开发项目时,多个改动后的版本在提交时会发生冲突,进行版本控制能有效避免
版本控制工具的功能
- 协同改动,并行不悖(多人 -> 同一项目)
- 数据备份,每次更改都被记录
- 只保存改动部分数据和信息,节省空间
- SVN 采用增量式管理:只记录改动部分,可据其还原
- Git 采取文件系统快照方式:
- 可查看历史记录
- 可还原到指定的历史状态
- 只保存改动部分数据和信息,节省空间
- 开发者权限控制
- SVN 权限分明、严格
- Git 允许团队外的开发者贡献代码
- 分支管理,多线并行(多团队 -> 同样项目(均来自同一源项目))
Git & 代码托管中心
结构
- 工作区(working direction): 改动、写代码的地方,如notepad++等编辑器
- 暂存区(index/stage):临时存放 / 追踪改动的数据,待提交分组,追踪清单
- 本地仓库(repository/history):存放各历史版本,在本地
- 远程仓库(remote repository):存放各历史版本,在云端方便团队交互,代码托管中心
文件状态
工作目录下面的所有文件都不外乎这两种状态:已跟踪、未跟踪(untracked)。
已跟踪的文件是指已经被纳入版本控制管理的文件,目前它们的状态可能是未更新(unmodified,查看文件状态时默认是不显示出来的),已修改(modified)或者已放入暂存区(staged)。未跟踪文件(untracked)一般是新建的,它们并没有出现在前面的版本中,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。
在编辑过某些文件之后,Git 将这些文件标为已修改(modified)。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。所以使用 Git 时的文件状态变化周期如下图:
代码托管中心
代码托管中心:维护远程仓库的工具
局域网:Gitlab 服务器
外网:Github(国外),Gitee(国内,码云)
团队内部协作:
项目经理(岳不群)启动了一个项目,与团队内的码农(令狐冲有权限对该项目提交改动)一同开发。
- 令狐冲先将项目
clone
克隆下来,在本地进行开发 - 通过
push
向远程仓库提交在本地做的改动 - 通过
pull
从远程仓库同步队友的代码改动
跨团队协作
项目经理(岳不群)启动了一个项目,与团队内的码农(令狐冲,有权限对该项目提交改动)一同开发。对于一些代码(葵花宝典)团队内的人并不熟悉,需要请求外部人员(东方不败,没有权限改动项目)的帮助。
- 东方不败可以使用
fork
创建分支,复制一个属于自己的相同的项目,进行开发 - 东方不败通过
pull request
询问岳不群团队[图片上传中...(跨团队协作.PNG-f67b8e-1620227223956-0)]
是否“拉回”自己分支的项目,审核通过后可以使用merge
整合 -
分支:
- 主支称
master
,只允许有一个 - 其他分支称
branch
,可以有多个 - master 如同树干,branch 是树枝
- 主支称