软件构造学习笔记2
1.SCM VS VCS
1.SCM
软件配置管理:追踪和控制软件的变化
Baselines 基线
版本:软件特定时刻指派的唯一编号,作为身份标志。
各个术语介绍:

2.vcs
1.本地版本控制系统 仓库位于开发者本地机器,无法与他人合作工程
2.集中式版本控制系统 仓库位于独立服务器 支持开发者之间进行合作
3.分布式版本控制系统 仓库位于独立服务器和每个开发者的本地机器
2.一个SCM实例 Git 基本功能介绍
Git是一个分布式版本控制系统 一个 Git 仓库分为三个部分: .git 目录:本地的 CMDB
工作目录:本地文件系统
暂存区:.git 目录中的一个文件,隔离工作目录和 Git 仓库
Object Graph 对象图是一个有向无环图,描述了版本之间的演化关系。一条边A→B表示在版本 B 的基础上作出变化,形成了版本 A。
结构
一般:每个 commit 指向一个父亲
分支:多个 commit 可指向同一个父亲
合并:一个 commit 指向两个父亲 一个
“分支”只是一个指向 commit 的别名
HEAD 指向当前工作的 commit
结点 一个 commit 存储一个树形结点。tree 中包含了数个 blob;每个 blob 是一个压缩了的仓库文件,不保存文件名信息。
对于每个文件的每个版本(或是不同文件名但相同内容的文件),Git 只会存储一个 blob,而允许多个 commit tree 指向同一个 blob。 一个 commit 中与之前相比未发生变化的文件,无需重复存储。文件未发生变化,则后续多个版本始终指向同一个 blob;文件发生变化了,存储两份不同的 blob,两个版本指向不同的 blob。

传统 VCS 和 Git 对比 传统 VCS:存储版本之间的变化(行) Git:存储发生变化的文件(而非代码行), 不变化的文件不重复存储

git命令:
1.下载git
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
因为git是分布式管理控制系统,故需要在下载后输入自己的名称和邮箱
2.创建版本库
$ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit $ git init Initialized empty Git repository in /Users/michael/learngit/.git/
此时,本地的git仓库就创建好了
名词解释:1.工作区:即电脑里创建好的目录。
2.版本库:工作区的隐藏目录.git即为版本库,版本库中存入了暂存区,git 创建的第一个分支master ,以及指向master的HEAD指针,git add 命令就是将文件从本地目录传向暂存区。

$ git add yourfile
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
2.git 远程仓库
第1步:创建SSH Key。
$ ssh-keygen -t rsa -C "youremail@example.com"
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:

在Repository name填入learngit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

在本地输入命令:
$ git remote add origin git@github.com:your account/learngit.git
这样远程仓库就创建成功了, git push 可以将本地仓库的文件push到远程仓库
$ git push -u origin master
实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
想删除远程库,可以用git remote rm <name>命令。使用前,建议先用git remote -v查看远程库信息:
$ git remote -v origin git@github.com:michaelliao/learn-git.git (fetch) origin git@github.com:michaelliao/learn-git.git (push) $ git remote rm origin
2,分支管理
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
$ git checkout -b dev
$git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev

新提交一次后,dev指针往前移动一步,而master指针不变:
$ git add readme.txt
$ git commit -m "branch test"

切换回master分支:
$ git checkout master
在dev上的工作完成了,就可以把dev合并到master上。

$ git merge dev
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:

$ git branch -d dev
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>、
以上就是git的基础教程,更多细节请参看使用手册

浙公网安备 33010602011771号