当前位置: 首页 > article >正文

Git的原理和使用(二)

1. git的版本回退

        之前我们也提到过,Git 能够管理⽂件的历史版本,这也是版本控制器重要的能⼒。如果有⼀天你发现 之前前的⼯作做的出现了很⼤的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本 回退的功能了。 执⾏ git reset 命令⽤于回退版本,可以指定退回某⼀次提交的版本。要解释⼀下“回退”本质是 要将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定:

当前我们的readme文件:

 hello git                                           v1.0
shenmengyao he yuanyiqi             v2.0

        git reset指令格式:git reset [--soft | --mixed | --hard] [HEAD] ,其本质是回退的是版本库的内容;

         如上图直接回退到第一个版本,但是我们现在想回到第二个版本的时候,指令如下:输入最开始的commit id;

        我们虽然进行回退到最初版本,但是依旧能够复原,主要是能够知道并使用最开始和最末尾的版本号,但是一旦服务器突然关闭或者清屏,导致我们回到最初版本之后没有后期版本的commit id;

        我们就使用git reflog;该指令能够看出我们的提交命令, 

        前面的黄色部分就是commit id,虽然有点短,但是我们依旧可以使用这些数字id来回退到我们希望的版本;

         值得说的是,Git 的版本回退速度⾮常快,因为 Git 在内部有个指向当前分⽀(此处是master)的 HEAD 指针, refs/heads/master ⽂件⾥保存当前 master 分⽀的最新 commit id 。当我们在回退版本的时候,Git 仅仅是给 refs/heads/master 中存储⼀个特定的version,可以简单理解 成如下⽰意图

        所以我们的所谓版本回退仅仅是master指向不同的commit id,每一个id都对应一个git对象,里面都存的是是文件的内容;

2. 撤销修改

        情况⼀:对于⼯作区的代码,还没有 add

        情况二:已经 add ,但没有 commit

        情况三:已经 add ,并且也 commit 了

如下图所示:

 情况一:

        1、手动操作

        2、git checkout -- Readme

如下所示:

情况二:

        git reset HEAD Readme,回退到当前版本,就是暂存区和当前的版本库保持一致,此时只有工作区还有内容;

        接下来使用:git checkout --   Readme,使得工作区也变干净;

情况三:

git reset --hard Headme^

        回退到上一个版本;

3.删除操作

1、rm file3

        该命令指示将工作区中的文件进行删除;

2、将该删除操作添加到暂存区中:git add file3

3、将该删除操作提交到版本库中:git commit -m "delete file3" 

        简化步骤到两步:

1、git rm file2

2、提交

 4.分支管理

   4.1 分支理解

        分⽀就 是科幻电影⾥⾯的平⾏宇宙,当你正在电脑前努⼒学习 C++ 的时候,另⼀个你正在另⼀个平⾏宇宙⾥ 努⼒学习 JAVA。

        如果两个平⾏宇宙互不⼲扰,那对现在的你也没啥影响。不过,在某个时间点,两个平⾏宇宙合并 了,结果,你既学会了 C++ ⼜学会了 JAVA

ps:to be continued!!!

本文封面来自snh48的杨冰怡!!!


http://www.kler.cn/news/355970.html

相关文章:

  • Python 代码使用 OpenCV 库实现了从摄像头获取视频流,并在视频中检测特定颜色区域的边缘线条
  • kaggle中如何更新上传自定义的数据集dataset?
  • 短视频矩阵源码搭建解析,支持OEM~
  • 编程实战:利用API接口轻松获取数据
  • 尚硅谷rabbitmq2024 第15-18节 springboot整合与可靠性答疑
  • 影响安装光伏电站的因素
  • 必看干货|等保测评(网络安全等级保护)五问五答
  • 在Openshift上安装MetalLB
  • 告别ELK,APO提供基于ClickHouse开箱即用的高效日志方案——APO 0.6.0发布
  • git submodule add用法
  • 鸿蒙网络编程系列21-使用HttpRequest上传任意文件到服务端示例
  • leetcode hot100 之【LeetCode 15. 三数之和】 java实现
  • Ubuntu如何显示pcl版本
  • 【数字图像处理】第5章 图像空域增强方法
  • 【Voxceleb2-AVSpeech】视听说话人数据集云盘下载
  • 开放式耳机品牌十大排名,2024年必备开放式耳机推荐大公开!
  • 推荐系统与大语言模型技术融合:EMNLP/NeurIPS相关论文导览
  • 计算机砖头书的学习建议
  • 【优选算法】探索双指针之美(一):初识双指针
  • opencv实时采集图像作为opengl的纹理贴图