提示:本文章为作者学习记录,如有错误请大家指正!!
文章目录
前言
GIT (分布式版本控制系统)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
提示:以下是本篇文章正文内容,下面案例可供参考
一、git是什么?
分布式版本控制系统
分布式:分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
二、版本控制工具应有的功能(git功能)
1、协同修改
多人并行不悖的修改服务器端的同一个文件。
2、 数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
3、版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空 间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文 件系统快照的方式。
4、权限控制
对团队中参与开发的人员进行权限控制。
对团队外开发者贡献的代码进行审核——Git 独有。
5、历史记录
查看修改人、修改时间、修改内容、日志信息。
将本地文件恢复到某一个历史状态。
6、分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。
三、git的优势
大部分操作在本地完成,不需要联网 完整性保证 尽可能添加数据而不是删除或修改数据 分支操作非常快捷流畅 与 Linux 命令全面兼容
四、git的结构
三个区域:
团队协作:
五、基本命令
1、本地库初始化
命令:git init
2、设置签名
- 项目级别:仅在当前本地库范围内有效
git config user.name xxx
git config user.email xxx
作用:区分不同开发人员身份。
- 系统用户级别:登录当前操作系统的用户范围
git config --global user.name xxx
git config --global xxx
3、基本操作
3.1 状态查看
git status
查看工作区、暂存区状态
3.3 提交
git commit -m “commit message” [file name]
将暂存区的内容提交到本地库
3.4 查看历史记录
git log
简化信息命令:git log --oneline
3.5 版本前进后退
基于哈希值操作[推荐]
git reset --hard [局部索引值]
git reset --hard a6ace91
注意:reset 命令的三个参数对比
–soft 参数
- 仅仅在本地库移动 HEAD 指针
–mixed 参数
- 在本地库移动 HEAD 指针
- 重置暂存区
–hard 参数
-
在本地库移动 HEAD 指针
-
重置暂存区
-
重置工作区
3.6 删除文件并找回
前提:删除前,文件存在时的状态提交到了本地库。
方法:找到未删除版本。
4、分支管理
4.1 什么是分支?
在版本控制过程中,使用多条线同时进行多个任务。
hot_fix:bug的修复
4.2 分支好处
-
1.多线同时进行,提高效率
-
2.分支隔离开,一条线失败不会对其他分支有影响。
4.3 分支操作
- 创建分支
git branch [分支名] - 查看分支
git branch -v - 切换分支
git checkout [分支名] - 合并分支
第一步:切换到接受修改的分支(被合并,增加新内容)上 git checkout [被合并分支名]
第二步:执行 merge 命令 git merge [有新内容分支名] - 解决冲突
原因:相同行有区别
第一步:编辑文件,删除特殊符号 第二步:把文件修改到满意的程度,保存退出 第三步:git add [文件名] 第四步:git commit -m “日志信息” 注意:此时 commit 一定不能带具体文件名
六、git基本原理
1、哈希
①不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
②哈希算法确定,输入数据确定,输出数据能够保证不变
③哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
④哈希算法不可逆
保证了数据的完整性
2、git的 文件管理机制
Git 把数据看作是小型文件系统的一组快照。
每次提交更新时 Git 都会对当前 的全部文件制作一个快照并保存这个快照的索引。
为了高效,如果文件没有修改, Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的 工作方式可以称之为快照流。
细节部分
Git 的“提交对象”
提交对象及其父对象形成的链条
3、Git 分支管理机制
分支的创建
分支的切换