此次学习的是清华《软件工程》网课的6.4、6.5节,具体的内容是配置管理部分。
配置管理
概念简述
软件配置管理 是一种标识、组织和控制修改的技术,它作用于整个软件生命周期,其目的是错误达到最小并最有效的提高生产率。
软件配置项 是为了配置管理而作为单独实体处理的一个工作产品或软件。包括文档数据、代码、相关产品等。
版本 是在明确定义的时间点上某个配置项的状态,版本管理是对系统不同的版本进行标识和跟踪的过程,从而保证软件技术状态的一致性,版本管理是软件配置管理的核心内容。
基线 是软件配置项的一个稳定版本,它是进一步开发的基础,只有通过正式的变更控制过程才能改变。软件开发的每一次迭代过程有:计划、需求、设计、实现、测试。
分支管理
配置管理工具Git
Git介绍
Git用于管理大中型软件开发,是分布式管理系统,其控制单位就是版本库。其版本库分为:远端版本库和本地版本库。
Git操作
创建与提交
- 安装git命令行
- 在希望创建版本库的地方打开命令行,创建一个空的文件夹,进入空的文件夹后,用git init,就可以把这个空的文件夹变成一个空的版本库(在本地磁盘看来,就是一个有特殊结构的文件夹)
- 在文件夹中创建一个文件,用git status命令列出当前版本库中尚未提交的文件改动(这些改动称为为跟踪的文件),例如发现file.txt这个文件是未跟踪的,用git add file.txt命令,把这个文件标记,文件就被git版本库获知(即被跟踪),用git commit-m“msg”将以上所有被跟踪的文件全部提交到版本库中
克隆到本地
一般采用一个远端版本库和若干个本地版本库的形式,大多数时候是先创建好远端版本库,此时就需要克隆。用git clone username@domain:path,GitHub版本库一般是git@github.com:用户名/版本库名。
从远端拉取
把远端版本库的变动同步到本地版本库。用git pull+远端版本库命令,就可以从远端拉取,比如file.txt在远端版本库改动,运行这个命令就自动同步到本地。
提交到远端
改动文件,先用git add file.txt,然后git commit-m“msg2”,改动并保存之后,用git push就能提交到远端版本库。git push的要求是,必须要拥有远端版本库的所有,所以通常应该先git pull。
撤销变动
先git add file.txt设为被跟踪,如果想撤销变动,用git reset HEAD file.txt,但这样这个文件依然变动了,如果想再更进一步,用git checkout -- file.txt,将会将这个文件直接恢复到上次commit之后的所有改动。
提交修改
如果我们想提交修改的文件,用git commit -a -m“msg4”,自动就把修改的文件add再commit,如果想再修改文件,并且提交到原版本,用git commit --amend,就把修改文件提交到上一次的commit里。
创建分支
git checkout -b week1创建一个新分支week1,同时当前工作的分支也切换到week1,在week1上做出一些更改并且commit提交后,如果远端版本库没有这个分支,那么就用git push -u origin week1。
合并分支
如果想将某个分支上的内容合并到另一分支,例如week1和master分支,git checkout week1,git commit -a -m “msg6”(week1修改提交是前提),首先切换回master分支,git checkout master,合并用git merge week1。
此时,可能会出现冲突,比如master和week1的改动出现了冲突,则需要手动合并为期望值,之后需要git add file.txt,让版本库知道冲突已经解决,然后提交git commit-m“msg”。
分支删除
在本地删除,git checkout master切换到其它分支,git branch -d week1,将week1删除。如果想同步到远端版本库,用git push origin --delete week1。
使用Git开发实践
对于开发过程中,不同的程序员应该在自己的本地版本库上建立分支,完成新功能开发后,再合并到主分支上去,并同步到远端。因此,master版本库始终都要是可运行、可测试、完成的。
- 如果在主分支上发现bug,修改后应该立刻同步到远端。
- 完成副分支后,如果主分支发生改变,要先将主分支上的更改拉取到本地,接着再把副分支合并到主分支上,把这些提交都提交到远端。