自学内容网 自学内容网

git使用“保姆级”教程4——版本回退及分支讲解

一、版本回退

1、历史回退(版本回退)——命令行git reset --hard 版本编号

  • 注意:当前命令会让工作区的内容发生改变,可以理解成历史区(master分支)直接回到工作区
  • 比如:从版本4回到版本3,则工作区只会显示版本3的代码内容

1.1、指令解释

// 回退到上一次提交的版本 => 在Head(当前指针指向的位置)后添加一个^
   $ git reset --hard HEAD^

// 回退到上上次提交的版本 => 在Head后添加两个^,依此类推
   $ git reset --hard HEAD^^
     
// 这里的~2 等于 ^^写法,比较简洁 
   $ git reset --hard HEAD~2 

// 后面还可以接"标识符"回到任意版本 => "标识符"来自提交版本时,生成的编号的前6位,可以通过`git log`查看
   $ git reset --hard 7016321 

1.2、图示说明

在这里插入图片描述
也就是:随着提交版本的增多,head会指向到最近一次记录

1.3、业务带入

  1. 创建4次提交版本记录——此时HEAD指针指向第4次的版本记录
    在这里插入图片描述
  2. 回退到第三次的版本记录
    在这里插入图片描述在这里插入图片描述
  3. 查看版本记录
    在这里插入图片描述

2、查看本地库所有的操作记录——命令行git reflog

  1. 查看所有的本地库操作记录
    在这里插入图片描述
  2. 找到对应版本号标识符
    在这里插入图片描述
  3. 回退到想回退的版本记录——从版本3回到版本4
    在这里插入图片描述
  4. 查看工作台
    在这里插入图片描述

3、历史回退(不修改工作区内容)——命令行git reset --soft

  • 注意:当前命令不会让工作区的内容消失,可以理解成版本回退到暂存区
  • 比如:从版本5回到版本3,工作区的代码不会消失
  • 作用
    • 版本注释写错时,可以选择这种回退方式,让代码放在暂存区后,再次重新提交到历史区,此时,可以重新补充版本注释内容
    • 当版本提交后,发现有bug需要修复时,可以通过这种方式,将提交后的代码撤回到暂存区,等修复bug后,再次将代码提交到暂存区,此时,之前退回来的代码会和这次修复后的代码进行合并,最后,将两份合并后的代码再一起提交到历史区,这样提交记录会很清晰
      • 注意:如果此时有,第二个页面功能已经开始写了,需要先提交当前需要修复的内容,不要再用全部上传了!
  1. 回退一个版本——从版本5回到版本3
    在这里插入图片描述
  2. 查看工作区 ——代码还在,可以理解回退到暂存区
    在这里插入图片描述
  3. 查看版本记录 ——记录已经没了
    在这里插入图片描述

4、git revert与git reset的区别

4.1、图解

在这里插入图片描述

4.2、注意

// 1、注意:这里可以不加 --hard 
      $ git revert HEAD
// 2、注意:和reset不同,revert这里的HEAD和reset差了一个版本,也就是:revert HEAD是回到上一个版本,revert HEAD^是回到上上个版本

4.3、业务带入

  1. 输入命令行回退到上个版本
    在这里插入图片描述
  2. 进入当前页面,输入i进行注释编辑,再输入esc退出,最后输入:wq回车
    在这里插入图片描述
  3. 查看版本记录——新增了一条记录信息
    在这里插入图片描述
  4. 查看工作区变化——代码内容已经回退成功了
    在这里插入图片描述

4.4、对比解释

  1. git reset
    • 回滚到对应的commit-id(提交记录)
    • 相当于是:删除了commit-id以后的所有的提交,并且不会产生新的commit-id记录
    • 如果要推送到远程服务器的话,reset这种回退方式会比较危险,因为需要强制推送-f,有可能覆盖团队内别人的代码,此时,比较建议使用git reset --soft这种回退方式再次提交
  2. git revert
    • 用来撤销某个特定提交的更改,但它不会直接修改或删除之前的提交记录。
    • 它会新建一个提交,把之前那个提交的改动“反向操作”一下
      • 比如:如果之前的提交是添加了某些代码,revert会新建一个提交来删除这些代码
    • 如果要推送到远程服务器的话,就是普通的操作git push就好了

二、版本回退

1、初识分支

  1. 解释
    • git分支就是:我们把整个文件夹分成一个个独立的区域,比如:
      • 在开发登录功能时,可以放在login分支下进行开发;
      • 开发列表功能时,可以放在list分支下进行开发;
      • 大家互不干扰,每个功能都是一个独立的功能分支,开发完成后,再合并到主分支中,分支没有用的时候,也可以删掉,这样开发就会好很多
    • git在初始化时,会自动生成master主分支,同时,我们也可以自己开辟出独立分支
  2. 作用
    • 在应对团队协作中,测试功能时不阻塞其它功能的开发进程
    • 单兵作战中,方便修复bug,不影响其它功能的正常开发
  3. 解释
    在这里插入图片描述
    在这里插入图片描述

2、创建分支

  1. 创建分支使用——git branch 分支名称指令
    在这里插入图片描述
  2. 查看当前分支情况——git branch指令
    • 可以看到,当前有两个分支:一个是master,一个是list
    • 前面带有* 号,且有高亮显示的分支,表示:当前所处的分支
      在这里插入图片描述

3、切换分支

  1. 解释
    • 对列表功能的开发要移动到list分支去完成,所以需要使用git checkout 分支名称进行切换
    • 注意:切换分支之前,一定要将当前分支的内容提交!否则在别的分支上会出现当前分支代码,这不对!
  2. 命令行:
// 切换到 list 分支
   $ git checkout list
  1. 后续
    • 后续在该分支上进行列表功能的开发,开发完成后,在当前分支上进行提交,提交后我们再进行分支切换
    • 发现master上还是最初始的状态,而list分支上有我们新写的列表功能的代码,此时按照分支把所有功能都开发完毕后,把所有代码都合并到master主分支上就可以了
  2. 图示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4、合并分支

  1. 解释
    • git中的合并分支,只能是:把别的分支内容合并到自己的分支上
    • 使用的指令是:git merge
// 切换到 master 分支
    $ git checkout master

// 把 list 的内容合并到自己的分支
    $ git merge list
  1. 后续
    • 这时,刚才在list分支上开发的内容,就都来到了master主分支上
    • 如果有多个分支的话,那么所有的最后分支都合并到master分支上时,我们的主分支上就有完整网站的所有页面,各个分支上都是单独的页面和功能
  2. 图解
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5、删除分支

  1. 解释: 此时开辟的list分支就没有什么用了,也就可以删除分支
  2. 步骤及命令行
    • 先切换到别的分支
    • 使用指令git branch -d 分支名称进行删除
// 先切换到别的分支
    $ git checkout master

// 删除 list 分支 => -d的意思是delete的缩写
    $ git branch -d list
  1. 图解
    在这里插入图片描述

原文地址:https://blog.csdn.net/2301_78675670/article/details/142652520

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!