前端版本控制git
Git操作
1.版本控制
2.集中化版本控制SVN
优点:代码存放在单一的服务器上,便于项目的管理,分布式的版本控制系统在管理项目时,放到不是项目版本与版本之间的差异,而是索引(所需要的磁盘空间少,所以每个客户端都可以放的下)
缺点:
回滚速度慢
服务器宕机:员工写的代码得不到保障
服务器炸了:项目的历史记录丢失
分布式版本控制GIT
客户端并不是提取最新版本的文件快照,而是把代码仓库完整地镜像下来。分布式的版本控制系统出现后,解决了集中式版本控制系统的缺陷。但是占用空间会大一点。
每一个客户端都是一台服务器。去中心化(区块链的思想)
Git bush 和 cmd之间的区别:cmd是windows的命令git是linux命令
用户信息初始化:
注册用户名:git config --global user.name “damu”
注册邮箱:git config --global user.email [email protected]
查看用户信息:git config --list
用户级别
3.区域
工作区:也就是你在写代码的地方,随便改随便删,也叫沙箱。
暂存区:每一次对文件的操作都会放在暂存区,不会立刻提交到版本库。
版本库:最终形成的项目才能称作版本,将项目存入版本库。
工作区 =》 暂存区 =》版本库
4.对象
Git 对象
向数据库写入内容,并返回对应的键值
Echo ‘test’ | git hash-object -w --stdin
↑返回出哈希(唯一标识),并存入数据库
Key:val组成的键值对,key就是val的hash,val的类型是blob
问题:
记住文件每一个版本所对应的KEY并不现实
文件名没有被保存,只保存了文件内容。
解决方法:树对象
当前操作都是对本地数据库进行操作,不涉及暂存区
树对象
树对象能解决文件名保存问题,所有树对象都以树对象和数据对象的形式存储。树对象对象对应了目录项,数据对象则对应文件内容。
构建树对象
Git cat-file -p master^{tree}
查看当前暂存区
Git ls-file -s
提交对象
就是对树对象的一个包装,给树对象解释说明。
项目版本的快照是树对象,项目提交的内容是提交对象。
5.初始git版本库:git init 6
.Git目录
(1)Hooks:目录包含客户端或服务端的钩子脚本
(2)Info:包含全局性排除文件
(3)Logs保存日志
(4)Objects:目录存储所有数据内容
(5)Refs:目录存储指向数据(分支)的提交对象的指针
(6)Config:文件包含项目特有的配置选项
(7)Description:用来显示对仓库的描述信息
(8)Head:文件指示目前被检出的分支
(9)Index:文件保存暂存区信息