Git的学习(二),看的时候边看边做!不动手敲就别看!

一、用Git命令查看历史版本

1. git log

[查看之前提交的详细记录]在这里插入图片描述

  • 内容解析:(以第一个log为例)在这里插入图片描述
    ①下图红色框框中的数值是一个哈希值,我们暂且可以将它理解为是一个指针,并指向了这次提交。
    在这里插入图片描述
    ②这里的HEAD是一个指针,指向当前的版本;在这里插入图片描述
    ③Author和Date表示的是提交人(刚开始我们配置的签名)和提交日期;在这里插入图片描述
    ④红色框框里的是我们提交的时候写的注释;在这里插入图片描述
  • 提交次数很多一个屏幕显示不下怎么办?就需要用到下面的多屏显示控制和接下来的指令了;

2. 多屏显示控制方式:

①空格向下翻页
②b向上翻页
③回车表示显示下一行
④q退出在这里插入图片描述

3. git log --pretty=oneline

[每次提交的信息显示成一行]在这里插入图片描述

4. git log --oneline

[每次提交的信息显示成一行并缩短哈希值(编码信息)]在这里插入图片描述

5. git reflog

[在git log --oneline 的基础之上,显示Head@{移动到当前版本需要多少步}]在这里插入图片描述

二、前进后退历史版本

1.理解本质

git在帮助我们管理各个版本的时候,它有个指针HEAD;我们的操作都是基于对HEAD这个指针进行操作的;
在这里插入图片描述

2.操作方式

2.1基于索引值操作
  • 索引是就是那个哈希值在这里插入图片描述
  • 回退命令: git reset --hard 想回退版本的索引值
    在这里插入图片描述
  • 前进命令:和回退命令相同,只需要改变版本号;(不需要考虑是前进还是后退,只需要写好索引值即可)
    在这里插入图片描述
2.2使用^符号(只能向后退,不可以往前)
  • 命令 git reset --hard HEAD^
    一个^号就可以回退一个版本,几个符号就可以回退几个版本;
    在这里插入图片描述
  • 疑问?如果想退10个版本还要写十个^符号么?为了解决这个问题就用到了下面的~符号
2.3使用~符号
  • git reset --hard HEAD~[n]在这里插入图片描述
2.4让我们看一下文件夹会有什么变化?
  • 当前的文件夹是有很多文件
    在这里插入图片描述
  • 回退到最初的版本之后:在这里插入图片描述
    仔细看我们的文件发生了什么变化?回退到第一个版本后我们的文件也发生了变化哦!
  • 如果用到下面的–soft参数的话,文件是不会发生变化的;
    在这里插入图片描述
3.reset命令的三个参数比较
  • –soft参数
    ①仅仅在本地库移动我们的指针
  • – mixed参数
    ①在本地库移动HEAD指针
    ②重置暂存区
  • –hard参数
    ①在本地库移动HEAD指针
    ②重置暂存区
    ③重置工作区

三、删除

1. 删除本地库的文件:rm 文件名

  • 1.1 例如我们删除一个版本库中的文件aaa.txt
    在这里插入图片描述
  • 1.2 将删除的文件再次加入暂存区
    在这里插入图片描述
  • 1.3注意:
    删除的记录不会被清除,只要时提交到本地库的操作都不会被删除,对应的只要我们回退到相应的版本,文件也会被找回来;
    在这里插入图片描述

2.添加到暂存区的文件的找回

  • 利用git reset --hard [指针位置]的方式就可以了
  • ①删除操作已经提交到本地库:指针位置指向历史记录;
    ②删除操作尚未提交到本地:指针位置使用HEAD;

3.找回别删除文件的前提

删除前,文件存在时的状态提交到了本地库;

四、比较文件差异

1.命令 git diff 文件名

  • 第一步:我们以aaa.txt举例,下图是提交到本地仓库的aaa.txt的文件内容,两行6,两行7在这里插入图片描述
  • 第二步:对aaa.txt进行如下修改在这里插入图片描述
  • 第三步:输入 git diff aaa.txt 命令
    在这里插入图片描述
  • 内容解析:
    ①第一行diff --git a/aaa.txt b/aaa.txt:
    表示比较两个版本的aaa.txt
    ②第二行index bcb04e5…7bfd263 100644:
    表示两个版本的git哈希值(index区域的bcb04e5对象与工作目录的7bfd263对象进行比较)
    ③ - - - a/aaa.txt 和 +++ b/aaa.txt:
    减号开头的表示变动前版本,加号开头的表示变动后的版本。
    ④红色字体表示文件删除了一行,绿色字体表示文件增加了一行;
    ⑤因为git是以行来管理我们的文件的,所以是先把777777这一行删掉,再增加一行777777 888888;
    在这里插入图片描述
  • 另外:与之前版本的aaa.txt进行比较
    命令用:git diff HEAD^ aaa.txt
    在这里插入图片描述
  • 另外:如何比较多个文件?
    命令: git diff HEAD
    即不指定文件名时,会比较工作区中所有文件;

五、分支

1.分支的概念

在这里插入图片描述

  • 1.1上图的master作为默认的分支(也是主干)- 什么是分支?
    在版本控制过程中,使用多条线同时推进多个任务,比如说在我们开发一个网站的过程中,有两个新功能,一个是购买功能分配给了小A写,一个是搜索功能分配给了小B写;他们两个分别创建两个分支,并且在自己的分支上进行代码的撰写和管理(开发),彼此独立;
  • 1.2那么为什么要用分支?为什么不直接在主干上去进行呢?
    ①不污染master主干
    ②如果某一个分支开发失败了(开发思路和开发大方向偏离很严重需要改动的很多—可直接删除这个分支、如果开发人员的水平不高,你也不敢直接让他们在主干上开发啊)
  • 1.3分支的好处
    ①同时并行推进多个功能开发,提高开发效率
    ②各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可。

2.分支操作

  • 创建分支
    git branch [分支名]
  • 查看分支
    git branch -v在这里插入图片描述
  • 切换分支
    git checkout [分支名]在这里插入图片描述
    现在的分支已经在hot_fix上了,那么我们可以对文件进行一些更改(假设我们在修复一个网站的bug),把修改好的文件add并commit到本地仓库;在这里插入图片描述
    那么修改好了代码,我们想要合并分支,那么前提是要站在主干分支上哦!
  • 合并分支
    ① 切换到接受修改的分支上(被合并,增加新内容)上;
    git checkout [合并到那个分支的名字]
    ②执行merge命令
    git merge [被合并的分支名]
    在这里插入图片描述
  • 解决冲突
    • 为什么会产生冲突?
      在这个下面这个图片里,我们有两个分支,那么就有一种可能,我们有可能在两个分支上修改了同一个文件的同一个地方,那么合并分支的时候以谁为准呢;在这里插入图片描述
      按照下面的步骤进行测试:
    • 在master分支下先进行对aaa.txt的修改,并add和commit在这里插入图片描述
    • 再切换到hot_fix分支下,对aaa.txt做出相同的修改(相同位置),并且add和commit
    • 切换回master分支,输入git merge hot_fix命令对分支进行合并。在这里插入图片描述
      得到如下的信息
      在这里插入图片描述
      内容解析:
      • ①Auto-merging aaa.txt:自动合并aaa.txt
      • ②CONFLICT (content): Merge conflict in aaa.txt:有冲突,在aaa.txt的合并时候有冲突
      • ③Automatic merge failed; fix conflicts and then commit the result.:自动合并失败了,修改冲突再提交;
        在这里插入图片描述
        红色框框表示正在合并的状态;
    • 我们使用vim编辑器来看一下现在的文件是什么样子的。在这里插入图片描述
      这时候我们手动的进行修改后,将文件修改好,再去add和commit
      注意!!!!!!
      这时候的commit不可以加上文件名
      在这里插入图片描述
      写 “git commit -m 注释 ” 就可以了
  • 总结一下,如何解决冲突
    ①第一步:编辑文件,删除特殊符号
    ②第二步:把文件修改到满意的程度,保存退出
    ③第三步:git add[文件名]
    ④第四步:git commit -m “日志信息”
    注意!此时commit一定不能带具体文件名!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值