哈工大软件构造-Git课程总结


前言

本文仅限于课程中一些简单的git概念以及操作


一、软件配置管理 SCM 与版本控制系统 VCS:

1.软件配置管理

软件配置管理:追踪和控制软件的变化
软件配置项(SCI):软件中发生变化的基本单元(例如:文件)
基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)
CMDB:配置管理数据库,存储软件的各配置项随时间发生变化的信息+基线

2.版本

版本:为软件的任一特定时刻(Moment)的形态指派一个唯一的
编号,作为“身份标识"
古老的版本控制方法:通过复制文件并修改文件名
本地版本控制系统:仓库存储于开发者本地机器无法共享和协作

集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器

二、Git 的结构、工作原理

在这里插入图片描述
修改、暂存、提交
Object Graph:版本之间的演化关系图,一条边 A->B 表征了“在版本 B 的基础上作出变化,形成了版本 A”
与之前 commit 中未发生变化的文件,无需重复存储
在这里插入图片描述
在这里插入图片描述

三、命令

commit命令

git commit命令将所有分阶段的更改以及用户的简短描述保存在“提交”到本地存储库中。
Git希望保持提交尽可能小,所以每当你提交时,它不是盲目地复制整个目录。如果可能的话,Git会将一次提交压缩成从仓库的一个版本到下一个版本的一组修改,或者称为“Delta”。

Git同时记录着提交的时间,这就是为什么大多数提交都有祖先提交(ancestor commits),我们在图片中用肩头来表示这种关系。记录仓库的历史对于每个维护项目的人来说都有好处。

这只是一种简化的说法,需要理解的东西还有很多,但现在你可以仅仅将提交看作是项目的快照。提交是一个轻量级的操作,两个提交之间的切换很迅速。

提交是Git使用的核心。 您可以将提交视为项目的快照,在当前存储库中创建该项目的新版本。 提交的两个重要特征是:
1.您可以稍后撤回已提交的更改,或将项目还原到该版本
2.如果多个提交编辑了项目的不同部分,则即使提交的作者彼此不知道,它们也不会互相覆盖。 这是通过Dropbox或Google Drive之类的工具使用Git的好处之一。

一个commit的节点的树状结构如下图所示:
在这里插入图片描述

add命令

git add命令本身并不复杂,字面意义上理解是“将一个文件添加到项目中“。但是这种理解有缺陷,有时候可能会出现某个文件同时存在暂存区域 和 非暂存区域(staged and unstaged area)。如果是将文件加到项目中,那只应该存在于暂存区,不能暂存区域 和 非暂存区域同时存在。更好的理解方式为:添加内容到下一次提交中。

分支与合并

以下图为例:
多个commit指向同一个父亲称为分支
一个commit指向两个父亲称为合并
在这里插入图片描述

git branch

git branch 命令实际上是某种程度上的分支管理工具。 它可以列出你所有的分支、创建新分支、删除分支及重命名分支。

git checkout

git checkout 命令用来切换分支,或者检出内容到工作目录。(类似于cmd中的cd指令)

git merge

git merge 工具用来合并一个或者多个分支到你已经检出的分支中。 然后它将当前分支指针移动到合并结果上。

实例

下图为分支合并的具体操作
在这里插入图片描述

对远程仓库的操作

管理远程仓库:添加远程库、移除废弃的远程库、管理各式远程库分
支、定义是否跟踪这些分支。
git remote:获取当前配置的所有远程仓库;
git remote add [shortname] [url]:添加一个远程仓库;
git fetch:从远程仓库抓取数据到本地;
git pull: 从一个仓库或者本地的分支拉取并且整合代码;
git push [remote-name] [branch-name]:将本地仓库中的数据推送到远程
仓库;
git remote show [remote-name]:查看某个远程仓库的详细信息;
git remote rm:从本地移除远程仓库;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值