git的安装与使用
文章目录
Git简介
Git简史
Git官网
Git优势
1、大部分操作在本地完成,不需要联网
2、完整性保证
3、尽可能添加数据而不是删除或修改数据
4、分支操作非常快捷流畅
5、与 Linux 命令全面兼容
Git安装
使用vim 编辑器
安装成功后右键任何一个目录会显示这两个选项
Git的结构
Git 和代码托管中心
代码托管中心的任务:维护远程库
局域网环境下
GitLab 服务器
外网环境下
本地库和远程库
团队内部协作
git pull 和git clone的区别
都是往下拉代码,git clone是克隆,git pull 是拉
从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone.(clone是将一个库复制到你的本地,是一个本地从无到有的过程)
从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)
跨团队协作
Git命令行操作
本地仓库初始化
git init
会在该目录下生成.git文件
注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡
乱修改。
设置签名
没有设置签名提交时会提示
项目级别
git config user.name tom_pro
git config user.email [email protected]
用户级别
git config --global user.name tom_glb
git config --global user.email [email protected]
信息保存位置:~/.gitconfig 文件
级别的优先级
1、就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
2、如果只有系统用户级别的签名,就以系统用户级别的签名为准
3、二者都没有不允许
基本操作
状态查询
git status
查看工作区、暂存区状态
主分支上
没有提交
更改可以被提交
绿色代表暂存区存在
红色代表修改过还没提交到暂存区
添加
git add 文件名
将工作区的“新建/修改”添加到暂存区
提交
git commit -m “commit message” [file name]
将暂存区的内容提交到本地库
查看历史记录
git log
git log --pretty=oneline
git log --oneline
git reflog
[email protected]{移动到当前版本需要多少步}
前进后退
基于索引值操作(推荐)
git reset --hard [局部索引值]
git reset --hard a6ac91
使用^符号:只能后退
git reset --hard HEAD^
注:一个^表示后退一步,n个表示后退n步
使用~符号:只能后退
git reset --hard HEAD~n
注:表示后退n步
reset命令的三个参数对比
–soft参数
仅仅在本地库移动HEAD指针
–mixed参数
在本地库移动HEAD指针
重置暂存区
–hard参数
在本地库移动HEAD指针
重置暂存区
重置工作区
三种参数对比
–hard:三个区全部同步
删除文件并找回
前提:删除前,文件存在时的状态提交到了本地库
操作:git reset --hard [指针位置]
–hard 参数三个区同步
1、删除操作已经提交到本地库:指针位置指向历史记录
2、删除操作尚未提交到本地库:指针位置使用 HEAD
就是把指针回到文件存在的历史记录
比较文件差异
git diff [文件名]
将工作区中的文件和暂存区进行比较
git diff [本地库中历史版本] [文件名]
将工作区中的文件和本地库历史记录比较
不带文件名比较多个文件
分支管理
什么是分支
在版本控制过程中,使用多条线同时推进多个任务
分支可以单独开发
分支和分支可以合并,如果冲突必须处理冲突
分支的好处
1、并行推进多个功能开发,提高开发效率
2、支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
分支操作
创建分支
git branch [分支名
查看分支
git branch -v
切换分支
git checkout [分支名
合并分支
1、切换到接受修改的分支(被合并,增加新内容)上git checkout [被合并分支名]
2、执行 merge 命令git merge [有新内容分支名]
解决冲突
冲突的表现
冲突的解决
1、编辑文件,删除特殊符号
2、把文件修改到满意的程度,保存退出
3、gt add [文件名]
4、git commit -m “日志信息”
注意:此时commit一定不能带具体文件名
Git 基本原理
哈希
哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几共同点
共同点
1、不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
2、哈希算法确定,输入数据确定,输出数据能够保证不变
3、哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
4、哈希算法不可逆
Git 地城采用的是SHA-1算法
哈希算法可以被用来验证文件。
Git 保存版本的机制
集中式版本控制工具的文件管理机制
以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。增量式
Git的文件管理机制
Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的工作方式可以称之为快照流。