本文只按照老师点出的复习要点来总结课件内容中的知识点。
软件配置管理(SCM)
- 定义:SCM 是跟踪和控制软件变化的任务。
- 实践:SCM 的实践包括版本控制和建立基线。
- 基线:基线是产品属性在某一时间点的约定描述,作为定义变化的基础。
- 配置项(CI):软件的任何组成部分(源代码、数据、文档、硬件、各种环境)都可能随着软件生命周期的进行而更新。软件配置项(SCI)是 SCM 的基本结构单元。
- 生命周期:一个配置项(CI)在其生命周期中会经历多个版本。
- 配置管理数据库(CMDB):存储软件的各配置项随时间发生变化的信息以及基线。
- 审核:CMDB 用于审计目的,记录谁在什么时间对配置项做了哪些更改。
版本控制系统(VCS)
- 版本:为软件的任一特定时刻的状态指派一个唯一的编号,作为“身份标识”。
- 版本控制过程:包括为软件的不同状态分配唯一版本名或版本号。
- 修订控制:通常用于跟踪电子信息(无论是否为计算机软件)的逐步不同版本。
- 个人版本控制需求:
- 回滚到过去版本
- 比较两个不同版本的差异
- 将完整版本历史推送到另一个位置
- 从备份位置拉取历史
- 合并来自同一早期版本分支的版本
- 团队协作:
- 促进多个开发者之间的沟通和工作共享/合并
- 记录不同开发者的个性化工作以便于审计
- 版本控制术语:
- 仓库(Repository):本地或远程存储项目版本的存储位置。
- 工作拷贝(Working copy):在开发者本地机器上的项目的可编辑副本。
- 文件(File):项目中的单个文件。
- 版本/修订(Version or revision):在特定时间点的项目内容记录。
- 变更/差异(Change or diff):两个版本之间的差异。
- HEAD:当前版本,指向程序员正在其上工作的版本。
- 版本控制系统类型:
- 本地 VCS:仓库存储于开发者本地机器,无法共享和协作。
- 集中式 VCS:仓库存储于独立的服务器,支持多开发者之间的协作。
- 分布式 VCS:仓库存储于独立的服务器加每个开发者的本地机器。
Git 作为 SCM 工具
- Git 简介:
- 最初发布于 2005 年。
- 最初作者是 Linus Torvalds。
- 用于 Linux 内核的开发。
- Git 仓库组成:
.git
目录:本地的 CMDB,存储所有版本控制数据。- 工作目录:本地文件系统。
- 暂存区:隔离工作目录和 Git 仓库。
- 对象图:Git 使用有向无环图(DAG)来存储项目文件的所有版本和描述这些变化的日志条目。
- 提交(Commit):对象图中的节点,代表项目的一次完整快照。
- 分支(Branch):指向特定提交的名称,允许并行修改。
- 合并(Merge):将两个分支的历史合并在一起。
- Git 支持协作:通过本地仓库和远程仓库的概念,支持开发者之间的协作。
- GitHub:一个基于 Web 的 Git 服务器和互联网托管服务,提供所有分布式版本控制和 SCM 功能,并增加其自己的特性,如错误跟踪、功能请求、任务管理和针对每个项目的 wiki。
Git的结构
-
Git仓库:包含三个主要部分
- .git目录:本地的配置管理数据库(CMDB),存储所有版本控制数据。
- 工作目录:本地文件系统,开发者可直接编辑文件。
- 暂存区:内存中的区域,用于隔离工作目录和Git仓库,准备下一次提交。
-
对象图:Git使用有向无环图(DAG)存储项目文件的所有版本和描述这些变化的日志条目。对象图存储在
.git
目录中。
Git的工作原理
-
文件状态:每个文件在Git中可能处于以下三种状态之一:
- 已修改(Modified):工作目录中的文件与仓库中的文件不同,但尚未暂存。
- 已暂存(Staged):文件已修改并添加到暂存区,准备提交。
- 已提交(Committed):工作目录和Git目录中的文件相同,表示当前状态已安全存储在仓库中。
-
对象图操作:所有Git操作(如clone, add, commit, push, log, merge等)都是对对象图的修改。
-
提交(Commit):在对象图中是一个节点,也称为项目的版本或修订版。每次提交都是项目文件在特定时间点的完整快照。
-
分支(Branch):分支是对提交对象的指针,允许从共同的先前版本分叉出来并行修改。
-
合并(Merge):将两个分支的变更历史合并在一起,创建一个新的共同祖先提交。
Git的基本指令
-
git clone URL local_repository
:从远程仓库克隆项目到本地,创建本地仓库的完整对象图。 -
git add
:将已修改的文件添加到暂存区,准备下一次提交。 -
git commit
:将暂存区的内容提交到本地仓库,创建一个新的快照。 -
git push
:将本地仓库的提交推送到远程仓库。 -
git pull
:从远程仓库拉取最新的提交并合并到本地仓库。 -
git checkout
:切换到指定的分支或恢复工作目录的文件。 -
git branch
:查看本地分支列表或创建/删除分支。 -
git merge
:将一个分支的更改合并到当前分支。 -
GitHub工作流程:
- 基本过程:commit(提交)、branch(分支)和merge(合并)。
- 协作过程:fork(分叉)和pull request(拉取请求)。