时光穿梭机

​ 企业中在多人的项目开发环境下,使用Git 版本控制工具对项目版本进行管理时,通常会对项目不同版本的文件进行查看,项目历史版本,未来版本的切换操作,对于一个项目开发人员,此时对于Git 的这些基本命令操作就成为了一项基本技能。

修改文件与文件提交

修改后内容如下:


此时当文件修改后 使用 git status 命令可以看到git 检测到文件被修改,git 版本库给出的下一步操作是添加修改的文件到暂存区 此时执行添加操作命令


执行提交


git log 命令查看操作日志记录


修改需要注意的问题

下面再次修改git01.txt 然后执行提交操作



此时 执行 git diff HEAD -- git01.txt 与版本库内容进行比较结果如下:

差异比较说明
`---`:表示变动前的文件
`+++`:表示变动后的文件
变动的位置用两个@作为起首和结束
@@ -1,2 +1,3 @@:减号表示第一个文件,"1"表示第1行,"2"表示连续2行。同样的,"+1,3"表示变动后,成为第二个文件从第1行开始的连续3行。

可以看出:文本中第三行内容并没有提交到版本库中 原因在于修改后的git01.txt 并没有添加到暂存区,所有执行提交操作并不会发生改变。

暂存区文件提交与撤销

​ 当发现因失误而将文件添加到暂存区时,git 支持文件的撤销操作 执行命令 git reset HEAD 文件 操作如下:

再次查看版本库状态 test.txt 成为未追踪文件

版本回退

​ 当文件修改后被提交的次数很多时,对于版本库中存放的文件就会出现不同的版本,在多人开发的项目环境中,通常会对不同版本文件进行查看甚至回退的情况(比如某些游戏中所提供的状态保存功能,能够在某一时刻保存整个游戏场景状态以方便后续继续在该状态下进行游戏进行而不是从头开始),值得庆幸的是 Git 也提供了同样的功能,能够让开发者在不同版本的项目中进行切换,达到时空穿梭自如的目的!

对于上面操作的git01.txt 文件已有几个版本,对于历史版本的查看 使用git log 命令:

git log:命令用于显示提交日志信息


列表显示的结果按提交时间倒叙排序,其中第一条中 HEAD -> master 代表当前指针指向Git 版本库中master 主干分支,每次提交 Git 内部均会生成一个唯一的SHA 算法构建的字符串来唯一标识当前版本

此时如果想要执行版本版本回退操作使用命令 git reset

git reset 命令用于将当前HEAD复位到指定状态。一般用于撤消之前的一些操作(如:git add,git commit等)。

回滚前在执行两次提交操作 方便文件不同版本间的切换

第三次提交 修改后的git01.txt 内容如下:


第四次提交 修改后的git01.txt 内容如下:

git log 查看提交历史记录如下


当然,如果提交历史记录较多 可以加入数字控制显示的版本记录数 并且使用--pretty=oneline简化输出 如下:

显示最近三次提交

切换版本前 git01.txt 内容如下:

回退到上一版本

执行 git reset --hard HEAD^

  • HEAD^:将指针指向上一个版本,如果是上上一个就是 HEAD^^,上上上一个HEAD^^^,但这样记就比较麻烦,如果回退版本较多,简写为 HEAD~100 往前回退100个版本 ~后跟数字即可
    

查看回退后的git01.txt内容如下:


回退操作已经完成,但此时如果想要回到未来的版本即最新的版本怎么办呢? 其实这里也比较简单,前面说到针对提交后的版本库,每个版本均会有一个唯一标识,这里找到对应版本标识即可完成回到未来版本的操作 如下


执行git reset 命令如下:

如果此时回到某一个版本后直接关闭了当前git 命令窗口 怎么样才能回到未来版本呢?因为此时未来版本的唯一标识id 在窗口中看不到了!

值得庆幸的是,Git早已为你想到了这种情况,Git提供了一个命令git reflog用来记录用户操作的每一次命令,效果如下:

git reflog:查看记录在本地的HEAD和分支引用在过去指向的位置。

文件删除

​ 在Git中,删除文件同样是一个修改操作,即在Git世界中,Git仅仅关注文件是否被修改(文件添加,更新,删除)

在工作区添加新文件git02.txt 内容如下:

将文件添加到版本库

文件提交到版本库后,在工作目录执行手动删除操作后执行git status 命令可以看到Git 能够追踪到文件被删除情况,注意此时版本库中文件并没有被删除,只是工作目录中文件被删除!

如果此时发现文件是被误删除呢,不用担心,这里可以将误删除的文件重新从版本库中检出,执行命令:

git checkout -- 文件名

如果确定是要执行删除操作 执行git rm 命令即可

修改文件与文件提交--乐字节Java相关推荐

  1. 慕课网,乐字节 Java电商秒杀项目

    慕课网.乐字节Java电商秒杀项目 技术点介绍: 前端:Thymeleaf,Bootstrap,Jquerry 后端:SpringBoot,MybatisPlus,Lombok 中间件:RabbitM ...

  2. java垃圾回收机制_乐字节Java|GC垃圾回收机制、package和import语句

    本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...

  3. java 获取 反射 方法 名_乐字节Java反射之一:反射概念与获取反射源头Class

    一.Java反射机制概念 "程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言",如Python, Ruby是动态语言:显然C++,Java,C#不是动态语言,但是JAV ...

  4. java反射 数组类,乐字节Java反射之三:方法、数组、类加载器和类的生命周期

    继续讲述Java反射之三:方法.数组.类加载器 一.方法 获取所有方法(包括父类或接口),使用Method即可. public static void test() throwsException { ...

  5. for循环如果先--_乐字节Java循环:循环控制和嵌套循环

    乐字节小乐上次讲完了Java反射,接下来小乐给大家讲述Java循环. 循环有以下四部分: Java循环 一.循环控制 1. do..while 直到型 ( 先执行后判断) ,结构为: 先执行循环体,后 ...

  6. static关键字_乐字节Java|this关键字、static关键字、block块

    大家好,乐字节的小乐将会给大家讲述Java继承的内容,一下是Java继承的知识图谱: 一. this关键字 在类的方法定义中使用的this关键字代表使用该方法的对象的引用. this 即"自 ...

  7. 慕课网、乐字节Java电商秒杀项目

    技术点介绍: 前端:Thymeleaf,Bootstrap,Jquerry 后端:SpringBoot,MybatisPlus,Lombok 中间件:RabbitMQ,Redis 秒杀方案: 分布式会 ...

  8. java 面向对象多态_乐字节Java面向对象三大特性以及Java多态

    ​ 以上就是本次学习的6大任务.我们依次来看. 1 Object类 Object类是所有Java类的根基类. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类. cla ...

  9. session作用域_看完这篇Bean的作用域与生命周期,问到面试官不敢问-乐字节java...

    Bean的作用域与生命周期 Bean的作用域 默认情况下,我们从Spring容器中拿到的对象均是单例的,对于bean的作用域类型如下: singleton 作用域 注意: lazy-init是懒加载, ...

最新文章

  1. 北大教授吴玺宏:从发声到语言,具身物理模型让NLP回到小数据时代
  2. mysql优化的重要参数 key_buffer_size table_cache
  3. 微服务架构 — 服务治理 — 服务限流、服务降级、服务熔断
  4. 系列(七)—测试用例设计
  5. html5 抽奖程序,真正的网页抽奖-JavaScript HTML5代码
  6. linux下计算目录文件和,统计Linux 中文件和文件夹/目录的数量(示例代码)
  7. Win7-VirsualBox下学习Ubuntu--初识ubuntu
  8. mysql 数据库的 导入于导出
  9. selenium_java
  10. php fmod小数位数_PHP取余函数介绍MOD(x,y)与x%y
  11. 税务计算机类考试题型,速看!2020年税务师考试方式、题型及计算器要求
  12. MySQL数据库学习路径 链接汇总
  13. 第三章:顺序结构程序设计(练习题)
  14. 回想过去几年的编程生活
  15. Fork/Join(分开/联合)
  16. Photoshop如何改变背景底色并调整照片尺寸和图像大小
  17. AutoResetEvent与ManualResetEvent区别
  18. Android存储路径解析
  19. 哈工大 软件构造Lab1的设计实现
  20. 在线、近线、离线数据存储概念

热门文章

  1. SQL server安装时:“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”错误
  2. 开山斧0.3.8(跨平台版本)《源码已开放》
  3. 另类的黑苹果“安装”方法。
  4. 围观设计模式(16)--结构型之组合模式(Composite Pattern)
  5. 华为公司员工待遇全面揭秘 选择自 CQP 的 Blog
  6. http://www.v2ex.com/ 技术论坛
  7. 今日金融词汇--- 股权质押
  8. 【blade的UI设计】理解前端MVC与分层思想
  9. cadence 查看器件丝印_一种Allegro软件中自动检查丝印摆放方向的方法与流程
  10. 通过雪花(snowflake)算法用Python实现一个简单的发号器