Git
1. git的优势
- 大部分操作在本地完成,不需要联网
- 完整性保证
- 尽可能添加数据而不是删除或修改数据
- 分支操作非常快捷方便(内部以快照管理,分支操作等于切换指针)
- 与Linux命令全面兼容
2. git的结构
3. 本地库与远程库的交互
- 团队内协作
- 跨团队协作
4. Git命令行操作
-
设置签名:
-
形式
- 用户名:
- Email地址:
-
作用:区分不同开发人员的身份
-
辨析:这里设置的签名和登陆远程库(代码托管中心)的账号、密码没有任何关系。
-
命令:
-
项目级别/仓库级别:仅在当前本地库范围内有效(需要在本地库使用命令)
git config user.name xxx git config user.email xxx@xxx.com 信息保存位置:./.git/config文件
-
系统用户级别:登陆当前操作系统的用户级别
git config --global user.name xxx git config --global user.email xxx@xxx.com 信息保存位置:~/.gitconfig
-
项目优先级:
- 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
- 如果只有系统用户级别的签名,就已系统级别的签名为准
- 二者都没有不允许
-
-
-
状态查看操作:查看工作区,暂存区的状态
git status
-
添加操作:将工作区的“新建/修改”添加到暂存区
git add [file name]
-
提交操作:将暂存区的内容提交到本地库
git commit -m "commit message" [file name]
-
版本的前进和后退:
-
查看历史记录
git log :多屏显示控制方式: ——空格向下翻页 ——b向上翻页 ——q退出 git log --pretty=oneline 每次操作只显示一行 git log --oneline 哈希值只显示一部分 git reflog 指针,会显示所有版本
-
前进后退
-
基于索引值操作【推荐】
git reset --hard 局部索引值
-
使用^符号:只能往后退,一个一步
git reset --hard HEAD^
-
使用~符号:只能后退,后面跟什么数字,表示后退几步
git reset --hard HEAD~3
-
reset命令的三个参数对比
- –soft参数:
- 仅仅在本地库移动HEAD指针
- –mixed参数:
- 在本地库移动HEAD指针
- 重置暂存区
- –hard参数
- 在本地库移动HEAD指针
- 重置暂存区
- 重置工作区
- –soft参数:
-
-
删除文件并找回
- 前提:删除前,文件存在时的状态提交到了本地库
- 操作:get reset --hard 【指针位置】
- 删除操作已经提交到了本地库:指针位置指向历史记录
- 删除操作尚未提交到本地库:指针位置使用HEAD
-
比较文件:
-
将工作区文件跟暂存区比较
git diff 文件名
-
将工作区中的文件和本地库历史记录比较
git diff 本地库中的历史版本 文件名
-
不带文件名则会比较多个文件
-
-
-
分支操作
-
分支的好处
- 同时并行推进多个功能的开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
-
分支操作
-
创建分支
git branch 分支名
-
查看分支
git branch -v
-
切换分支
git checkout 分支名
-
合并分支
-
第一步:切换到接受修改的分支上(被合并,增加新内容)
git checkout 被合并分支名
-
第二步:执行merge命令
git merge 有新内容的分支
-
冲突的解决
- 编辑文件,删除特殊符号
- 把文件修改到满意的程度,保存退出
- git add 文件名
- git commit -m “日志信息” (此时commit一定不能带具体文件名)
-
-
-
-
远程库操作
-
查看/添加当前远程地址别名
git remote -v git remote add 别名 远程地址
-
推送代码
git push 别名 分支名
-
克隆代码
-
完整地把远程库下载到本地
-
创建origin远程地址别名
-
初始化本地库
git origin 远程地址
-
-
拉取代码:pull = fetch + merge
git pull 远程地址别名/远程分支名 git fetch 远程库地址别名 远程分支名 git merge 远程库地址别名/远程分支名
-
解决冲突
- 要点
- 如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉去
- 拉去下来后如果进入冲突状态,则按照“分支冲突解决”操作即可
- 要点
-
5. Git的基本原理
-
哈希:哈希是一个系列的加密算法,各种不同的哈希算法虽然加密强度不同,但是有以下几种共同点
-
不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
-
哈希算法确定,输入数据确定,输出数据能够保证不变
-
哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
-
哈希算法不可逆
Git底层采用的是SHA-1算法。
哈希算法可以被用来验证文件。原理如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NgShHvJU-1629604041107)(C:\Users\MitsuiYe\AppData\Roaming\Typora\typora-user-images\image-20210821162115584.png)]
Git就是靠这种机制来从根本上保证数据完整性的。
-
-
版本管理机制
- 集中式版本控制:增量
- git版本控制:快照,创建和移动指针
变
-
哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
-
哈希算法不可逆
Git底层采用的是SHA-1算法。
哈希算法可以被用来验证文件。原理如下图所示:
Git就是靠这种机制来从根本上保证数据完整性的。
-
版本管理机制
- 集中式版本控制:增量
- git版本控制:快照,创建和移动指针