版本控制前瞻
1.版本管理演变
没出来git之前
1.1集中式VCS
1.2分布式VCS
Git特点
2.1产品
很多公司基于GitLab做CI/CD 做二次开发
3.Git安装
这里我用centos演示
https://editor.csdn.net/md/?articleId=105419255
3.1最小配置
查看配置
git config --list
配置user.name 和 user.email
这是最小配置 为了记录版本变更历史(谁修改的)
git config --global user.name 'xxxx'
git config --global user.email 'xxxemail_addr'
3.2其他配置
4.创建Git仓库
5.Git工作区和暂存区
git add xxx
暂存区管理
git commit -m 'xxx'
本地仓库管理
git commit -am 'xxx'
直接提交到本地仓库
5.1实操
6.重命名文件问题
我将A.txt文件重命名为B.txt
我们发现 我手动改名字 然后提交变更 git就是认为我改名字
所以为了不麻烦,git一条命令就ok了.
git mv xx ss
7.查看版本历史
上面已经用到了
git log
为了演示 我基于某个版本创建了一个temp分支
如果想看更多log的命令
并且你安装了浏览器可以这样,
git help --web log
因为我这里是centos上的git,这个没法演示,我换一个windows的
可以看到它打开了你git安装目录里面的一个文本
这里就有关于log的相关操作
7.1gitk
在图像界面gitk
gitk
这个图形界面里面由很多丰富的功能 自行研究
8 .git文件夹
git的核心内容
结构
[root@sixmillions .git]# tree
.
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── fsmonitor-watchman.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── pre-merge-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ ├── pre-receive.sample
│ └── update.sample
├── index
├── info
│ └── exclude
├── logs
│ ├── HEAD
│ └── refs
│ └── heads
│ ├── master
│ └── temp
├── objects
│ ├── 00
│ │ └── 847fb3338afbd404d63f574cfe2b5a6e5a52bf
│ ├── 12
│ │ └── 32d067447d8c6b0d74f79b4c5a1f6da61bfecd
.
.
.
.
│ ├── ee
│ │ └── 1451acbb6f262db74f5e5622011ec1721b0691
│ ├── info
│ └── pack
└── refs
├── heads
│ ├── master
│ └── temp
└── tags
8.1 HEAD文件
控制当前在哪个分支
8.2config文件
一些配置,例如我们的用户名字和邮箱
我们修改这个文件的localname后,就变了
8.3tag文件夹
存放了版本的标签,就是版本号之列的意思
8.4heads文件夹
存放的是分支信息
就是分支指向的是哪个版本
8.5object文件夹
存放了每个版本的内容
9.三个核心存储对象
git存储的三个概念
commit tree blob
一个commit对应一个tree,
一个tree,有很多blob(可以理解为叶子)
10.练习