Git&GitHub |Git命令行操作 |本地库操作 |Git基本原理


在这里插入图片描述

本地库操作

1. 本地库初始化

命令:git init

在这里插入图片描述
在这里插入图片描述
本地库初始化后,还要设置签名:

签名需要有用户名Email地址,来区分不同开发人员的身份。

(1)项目级别 git config:仅在当前本地库范围内有效。

(2)系统用户级别 git config --global:登录当前操作系统的用户范围。

  • 例:
    git config --global user.name fanchenaliang_glb
    git config --global user.email [email protected]
    在这里插入图片描述
    在这里插入图片描述

优先级:项目级别优先于系统用户级别,二者都有时,采用项目级别的签名。

注意:这里设置的签名与登录代码托管中心的用户名和Email地址没有任何关系。

实际开发时,只需要设置系统用户级别的就够了。

2. Git基本操作

2.1 添加&提交&状态查看

操作 命令 说明
状态查看 git status 查看工作区、暂存区状态
添加 git add [file name] 将工作区的“新建/修改”添加到暂存区
撤销 git rm --cached [file] 将以添加到暂存区的内容撤回至工作区
提交 git commit -m "commit message" [file name] 将暂存区的内容提交到本地库

在这里插入图片描述
在这里插入图片描述

2.2 查看历史记录

命令 说明
git log 在这里插入图片描述
git log --pretty=onelinegit log --oneline 在这里插入图片描述
git reflog 在这里插入图片描述

注意:git log --oneline 命令只显示当前命令之后的版本。

2.3 版本前进后退

版本前进后退的本质是对Head指针的操作。

三种方式,推荐第一种 说明
git reset --hard [局部索引值] 在这里插入图片描述
git reset --hard HEAD^:一个^代表后退一个版本 在这里插入图片描述
git reset --hard HEAD~n:后退n步 在这里插入图片描述

reset 命令的三个参数的对比

  • --soft参数:仅在本地库移动HEAD指针。
  • --mixed参数:在本地库移动HEAD指针,重置暂存区。
  • --hard参数:在本地库移动HEAD指针,重置暂存区,重置工作区。

可以理解为soft撤销了commit命令;mixed撤销了add和commit命令。

2.4 永久删除文件后找回

前提:删除前,文件存在时的状态已经提交到了本地库。
删除操作已经提交到本地库:git reset --hard HEAD[历史记录]
删除操作尚未提交到本地库:git reset --hard HEAD

2.5 比较文件差异

git diff [文件名]:将工作区中的文件和暂存区进行比较。
git diff [本地库中历史版本] [文件名] :将工作区中的文件和本地库历史记录比较。
不带文件名会比较多个文件。

3. 分支管理

在版本控制过程中,使用多条线同时推进多个任务的方法叫做分支。

  • 同时并行推进多个功能开发,提高开发效率。
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
    在这里插入图片描述

1.3.1 分支操作

分支命令 说明 演示
查看分支 git branch -v 在这里插入图片描述
创建分支 git branch [分支名] 在这里插入图片描述
切换分支 git checkout [分支名] 在这里插入图片描述
合并分支 先切换到接受合并的分支上,再git merger [有新内容的分支] 在这里插入图片描述

1.3.2 合并时冲突的解决

当两个或分支都有修改且修改的是同一文件的同一位置,且内容不一致,此时就产生了合并冲突。解决冲突需要下面三步:

第一步:编辑文件,删除特殊符号,修改到满意为止,保存退出。
在这里插入图片描述

第二步:git add [文件名]
在这里插入图片描述
第三步:git commit -m "日志信息"
在这里插入图片描述

注意:此时 commit 一定不能带具体文件名

4. Git基本原理

4.1 Hash算法简介

在这里插入图片描述
哈希实际上是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

(1)无论输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
(2)哈希算法确定,输入数据确定,输出数据能够保证不变。
(3)哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大。
(4)哈希算法不可逆。

哈希算法可以被用来验证文件。原理如下图所示:
在这里插入图片描述
Git 底层采用的是 SHA-1 算法,就是靠这种机制从根本上保证数据完整性。

4.2 Git版本管理机制

集中式版本控制工具的文件管理机制(如SVN)
每一个版本只将文件的修改保存起来,需要某一个历史版本的数据时,需要获得当前修改、历史版本的修改、原始文件合并起来展现。这种增量式的版本控制,有利于节约服务器的存储空间。
在这里插入图片描述
分布式版本控制工具的文件管理机制(如Git)
Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的工作方式可以称之为快照流。
在这里插入图片描述
各个版本之间的历史记录,通过各个版本之间的父子关系建立,类似于链表。
在这里插入图片描述

在Git版本管理机制的基础上,Git分支管理的本质是创建和移动指针。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/106384387