3.软件构造过程与配置管理

本文详细介绍了软件配置管理SCM的概念,包括配置项、基线和CMDB,并对比了不同类型的版本控制系统。重点讲解了Git的仓库结构,文件状态的演变,以及Git的工作原理,如分支、合并和HEAD的理解。此外,还列举了Git常用的基本指令,如add、commit、branch、merge等。
摘要由CSDN通过智能技术生成

软件构造过程与配置管理

1 软件配置管理SCM与版本控制系统VCS

1.1 软件配置管理SCM(Software Configuration Management)

  1. 软件配置管理SCM:追踪和控制软件的变化
  2. 软件配置项:软件中发生变化的基本单元(例如:文件)
  3. 基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)
  4. CMDB:配置管理数据库存储软件的各配置项随时间发生变化的信息+基线
  5. 版本:为软件的任一特定时刻(Moment)的形态指派一个唯一的编号,作为“身份标识”

1.2 版本控制系统VCS(Version Control System)

  1. Local VCS:本地版本控制系统:仓库存储于开发者本地机器无法共享和协作

  2. Centralized VCS:集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作

  3. Distributed VCS:分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器

2 Git的结构、工作原理、基本指令

2.1 Git的结构

2.1.1 仓库结构
  • .git仓库.git directory(配置管理数据库,存储软件的各配置项随时间发生变化的信息和基线)

  • 工作目录Working directory:本地文件系统

  • 暂存区Staging area:用来隔离工作目录和git仓库

在这里插入图片描述

2.1.2 文件状态
  • 已修改:刚在工作区Working directory改完,还没有放到暂存区
  • 已暂存:将在工作区改完的版本add到暂存区Staging area
  • 已提交:将在暂存区的版本commit到.git仓库.git directory,此时工作目录的版本与git仓库的版本保持一致

2.2 Git的工作原理

2.2.1 分支与合并
  • 除初始commit外,每个commit至少有一个父亲
  • 多个commit指向同一个父亲:分支
  • 一个commit指向两个父亲:合并
    在这里插入图片描述
2.2.2 文件变化
  • 文件未发生变化,则后续多个版本始终指向同一个文件,无需重复存储
  • 文件发生变化了,存储两份不同的文件,两个版本指向不同的文件
    在这里插入图片描述
2.2.3 HEAD的理解

HEAD,它始终指向当前所处分支的最新的提交点commit,但其表示的依然是分支如master或test。你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变

2.2.4 分支合并举例
  • 创建分支只是给当前的提交点加了个分支名引用
  • 只用commit才会增加新的提交点
  • 合并时比较两个分支当前的提交点
    若主分支提交点是副分支提交点的祖先,则主分支移动到副分支提交点;
    若主分支提交点和副分支提交点有共同的祖先,则生成一个新提交点以当前两个提交点为父亲,主分支移动到新提交点
  1.  git checkout –b iss53 创建分支iss53并切换到iss53,依然在提交点C2
    

    在这里插入图片描述

  2.  git commit 在分支iss53上commit一个新提交点C3,C3在C2后
    

    在这里插入图片描述

  3.  git checkout master 切换到分支master,在提交点C2
     git checkout –b hotfix 创建分支hotfix并切换到hotfix,依然在提交点C2
     git commit 在分支hotfix上commit一个新提交点C4,C4在C2后
    

    在这里插入图片描述

  4.  git checkout master 切换到分支master,在提交点C2
     git merge hotfix 将当前分支master(主分支)与hotfix(副分支)合并,主分支移动到副分支提交点C4
    

    在这里插入图片描述

  5.  git branch –d hotfix 删除分支名hotfix,不影响提交点
     git checkout iss53 切换到分支iss53,在提交点C3
     git commit 在分支iss53上commit一个新提交点C5,C5在C3后
    

    在这里插入图片描述

  6.  git checkout master 切换到分支master,在提交点C4
     git merge iss53 将当前分支master(主分支)与iss53(副分支)合并,生成一个新提交点C6以当前两个提交点为父亲,主分支移动到新提交点C6
    
    

    在这里插入图片描述

2.3 Git的基本指令

在这里插入图片描述

  • add

    git add .	添加当前目录的所有文件到暂存区
    git add [dir]	添加指定目录到暂存区,包括子目录
    git add [file]	添加指定文件到暂存区
    
  • commit

    git commit -m [message]	交暂存区到本地仓库,message代表说明信息
    git commit [file] -m [message]	提交暂存区的指定文件到本地仓库
    git commit --amend -m [message]	用一次新的commit,替代上一次提交
    git commit -a 跳过git add步骤,直接将所有修改过的文件暂存起来并提交
    
  • branch、checkout、merge

    git branch	列出所有本地分支
    git branch -r	列出所有远程分支
    git branch -a	列出所有本地分支和远程分支
    git branch [branch-name] 新建一个分支,但依然停留在当前分支
    
    git checkout -b [branch-name] 新建一个分支,并切换到该分支
    git checkout [branch-name]	切换到指定分支,并更新工作区
    
    git branch -d [branch-name]	删除分支
    git branch --track [branch] [remote-branch]	新建一个分支,与指定的远程分支建立追踪关系
    
    git merge [branch]	合并指定分支到当前分支
    
  • diff

    git diff 显示工作区和暂存区的差异
    git diff HEAD 显示工作区与当前分支最新commit之间的差异
    
  • rm

    git rm [file] 与版本一致未修改的文件,删除工作区中的文件,同时将删除添加到暂存区
    git rm -f [file] 与版本不同修改过的文件,强制删除工作区中的文件,同时将删除添加到暂存区
    git rm --cached [file] 会删除暂存区中的文件,但是会保留工作区中的文件,取消了版本控制
    
  • log

    git log 列出所有commit,显示提交对象的哈希值,作者、提交日期、和提交说明
    git log [file] 显示文件的哈希值,作者、提交日期、和提交说明
    
  • reset [commit]:提交点哈希,如1a1e91bf37

    git reset —soft [commit] 只改变提交点,暂存区和工作目录的内容都不改变
    git reset —mixed [commit] 改变提交点,同时改变暂存区的内容
    git reset —hard [commit] 提交点、暂存区、工作区的内容都会被修改到与提交点完全一致的状态
    git reset --hard HEAD	让工作区回到上次提交时的状态
    
  • remote

    git remote add origin [url] 添加远程仓库
    
  • push [remote]:远程主机名,如origin

    git push [remote] [branch]	上传本地指定分支到远程仓库
    git push -u origin master 提交到具体的分支
    -u:将本地仓库分支与远程仓库分支一起合并。
    origin:远程仓库的意思,如果这个仓库是远程的那么必须使用这个选项。
    master:提交本地matser分支仓库
    
    git push -f|--force [remote] 强行推送当前分支到远程仓库,即使有冲突
    git push --all [remote] 	推送所有分支到远程仓库
    
  • clone

    git clone 从远程仓库复制到本地
    
  • fetch

    git fetch 从远程仓库抓取全部分支到本地,但不与本地的合并
    
  • pull

    git pull 下载更改并直接合并/集成到HEAD中
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SolemnJudgment

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值