Git的原理与使用(二)

目录

修改文件

版本回退

小测试

第一次修改提交

第二次修改提交 

第三次修改 

查看历史提交记录 

版本回退快的原因

撤销修改

位于工作区未add

已add未commit

已add且commit

删除文件

分支管理

理解分支 

创建分支

切换分支


修改文件

版本库是指maser

查看当前提交状态指令:git status

这里表示ReadMe被修改过了,但是还没提交 

显示版本库和工作区文件差异指令:git diff HEAD 文件名  

显示暂存区和工作区文件差异指令:git diff 文件名

  • a:表示修改前文件(a/ReadMe,改动前文件名是ReadMe)
  • b:表示修改后文件(b/ReadMe,改动后文件名仍然是ReadMe)
  • -:表示修改前
  • +:表示修改后
  • -1:展示改动前的第一行内容
  • +1,2:展示改动后从第一行开始到第二行的内容(1,2可被理解为行号的范围)

基本概念:工作区中文件的新增、修改或删除都是对工作区的修改

注意事项:Git追踪管理的是修改而不是整个文件

版本回退

基本概念:Git能管理历史版本文件,想要以前版本的文件就需要用到版本回退功能

指定退回某一次版本指令:git reset [选项] HEAD

本质是回退版本库的内容,工作区或暂存区是否回退由命令参数决定

常见选项:

  • --mixed:默认选项不用写,将暂存区内容退回为指定提交版本内容,工作区文件保持不变
  • --soft:将版本库回退到某个指定版本,不改变工作区和暂存区的内容
  • --hard:将暂存区和工作区的内容退回到指定版本
  • HEAD:可以直接写成commit id 表示指定退回的版本,HEAD表示当前版本,HEAD^表示上一版本,HEAD^^表示上上个版本......,也可以使用~数字表示,HEAD~0表示当前版本、HEAD~1表示上版本......

注意事项:

1、工作区有未提交的代码时不要用hard,否则无法找到未提交的代码

2、使用--hard将暂存区和工作区的内容退回到指定版本

2、hard还可以做后悔药(选择之前最新的commit id就能回退到原来的位置)

3、git reflog记录所有提交的指令

 4、git reflog得到的小串字符是原commit id的一部分,也可以通过它们进行回退

小测试

步骤:更新三个版本的ReadMe,并分别进行3次提交

第一次修改提交

第二次修改提交 

第三次修改 

查看历史提交记录 

        如果我们在提交完version3后,发现version3编写错误,想要退回version2,重新基于version2开始编写,即希望将工作区的内容退回到version2版本,故需要用到--hard参数:

        可以发现,此时ReadMede文件的内容已经退回到version2了,当前我们再次使用git log查看一下提交日志,发现最新的commit id是version2:

        如果我还想回到version3,但是此时version3的commit id我们已经无法通过git log找到了,Git为我们提供了一个git reflog指令帮我们记录了每一次命令:

        其中,1c7c46b是什么东西?它是version3的commit id的一部分,在版本回退的时候我们也可以使用commit id的一部分来代表目标版本:

版本回退快的原因

        Git内部有个指向当前分支(mastr)的HEAD指针,refs/heads/master文件中保存当前master分支的最新commit id,当我们回退时该指针指向的内容会根据我们的要求而改变:

撤销修改

问题:工作区写了很长时间代码,但是越来越写不下去自己写的太垃圾了,想要恢复到上一个版本

位于工作区未add

指令:git checkout -- 文件名

功能:将工作区的文件回退到上一次的版本

注意事项:--必须加,否则会变成另一种意思

已add未commit

指令:git reset HEAD 文件名

功能:将暂存区内容退回指定的版本内容,但工作区内容不变

        reset的回退还可以回退到当前版本,即跟版本库中内容保持一致,如果版本库中的内容是空,则工作区和暂存区中的内容也可以回到空

已add且commit

版本库中回撤到上一版本的前提条件是:commit之后没有push

push:将版本库中的内容提交到远程仓库(在实际使用时都是用远程仓库的,撤销修改的主要目的就是为了防止我们的劣质代码放入远程仓库)

删除文件

基本概念:在Git中删除也是一个修改操作,要让一个文件彻底消失要将它的暂存区中的内容也删

指令:git rm 文件名

功能:将文件从工作区和暂存区删除

        当您在 Git 中删除文件并提交这一更改时,实际上提交的是对该文件的删除操作。即使只提供一个简单的删除信息,Git 仍然能够识别并记录这个操作。

        当您执行 git commit -m "Remove file_name" 这样的命令后,Git 会创建一个新的提交记录,并将其中包含了指定文件被删除的信息。版本库中确实还保留着历史记录,但在最新提交中包含了对应文件被移除或者删除掉所做出更改

分支管理

理解分支 

基本概念:每次的提交会被串成一条时间线即分支,若只有一条分支,则它是主(master)分支

注意事项:

1、HEAD 指向当前工作目录状态(通常是某个 branch 的 tip),而 master 分支则表示项目历史记录中主要开发线上最后一次 commit 的位置

2、HEAD可以指向其它分支

创建分支

查看本地当前所有分支指令:git branch

*表示当前HEAD指向的是master分支,即当前工作分支 

新建分支指令:git branch 分支名 

此时dev分支和master分支指向同一个修改,这是因为dev分支是根据最新一次提交创建的

想要让dev分支指向一条另外的提交线,需要令HEAD指向dev分支 

切换分支

切换指令:git checkout 分支名

git checkout --表示撤销修改

接下来在dev分支下修改ReadMe文件,新增一行内容并进行一次提交:

现在dev分支完成工作,切换回master分支:

发现ReadMe文件中新增的内容不见了,但是在dev分支上该内容还在:

这是因为dev和master两者指向的提交是不一样的:

结论:因为我们是在dev分支上提交的,而master分支此时的提交点并未被改变,当切换至master分支时,HEAD就指向了master,当然看不见提交了

~over~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/475355.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docusaurus和HelpLook:谁更适合做知识库管理

在当今信息化时代,企业建立和维护一个好用、高效、能持续更新的知识库,对内部沟通、团队合作和客户服务都很重要。Docusaurus和HelpLook都是很好的知识库管理工具,但它们的功能和优势各有不同。跟着我一起深入了解两个工具之间的优劣&#xf…

云轴科技ZStack受邀参加鲲鹏原生开发合作启动仪式

3月14日-15日,华为中国合作伙伴大会2024在深圳隆重开幕。作为鲲鹏生态重要合作伙伴,云轴科技ZStack创始人&CEO张鑫受上海鲲鹏生态创新中心之邀参加此次大会,并参加鲲鹏原生开发合作启动仪式。 鲲鹏原生应用开发旨在为伙伴提供鲲鹏硬件底…

Yolo系列各代网络结构分析(一)

Yolo系列 Yolo系列算是目标检测领域的常青树了,从v1到最近的v9,一直都在不断迭代,不断改进,但是细看其各代网络的发展,其实还是有很多一脉相承之处以及算法设计偏好的,总结主要为以下几个方面:…

3、类的生命周期

类的生命周期描述了一个类加载、使用、卸载的整个过程。整体可以分为: 加载连接,其中又分为验证、准备、解析三个子阶段初始化使用卸载 2.3.1 加载阶段 1、加载(Loading)阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码…

Halcon 3D算子总结整理

halcon 3D包含以下几个模块: 3D Matching(3D匹配)3D Object Model(3D模型)3D Reconstruction(3D重构)3D Transformations(3D转换) 1. 3D Matching 1.1 3D Box3D盒查找器…

【Memcached】springBoot 集成 memcached 两万字长文带你认识memcached

目录 一、 memcached 介绍1.1 简介1.2 特性1.3 优点1.4 缺点1.5 实现原理1.6 适用场景1.7 不适用场景1.8 与 Redis 比较相同点1.9 与 Redis 比较不同点 二、对 java 的支持2.1 Memcached-java-client 客户端2.2 Spymemcached 客户端2.3 XMemcached 客户端 三、下载安装3.1 wind…

anaconda迁移深度学习虚拟环境 在云服务器上配置

1 anaconda 虚拟环境操作 1、 查看虚拟环境 conda info -e2、 创建新的虚拟环境 conda create -n deeplearning_all pip python3.63、 激活新建的虚拟环境 Conda activate deeplearning_all2 环境中相关库的版本即安装说明(这些库都是对应匹配的) …

1236 - 二分查找

代码 #include<bits/stdc.h> using namespace std; int a[1100000]; int main() {int n,x,l,r,p,mid,i;cin>>n;for(i1;i<n;i)cin>>a[i];cin>>x;l1;rn;p-1;while(l<r){mid(rl)/2;if(a[mid]x){pmid;break;}else if(x<a[mid]) rmid-1;else if(x…

微服务day04(上)-- RabbitMQ学习与入门

1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;但…

MySQL数据库 - 索引

一. 索引的相关知识 1. 索引的概念 是一个排序的列表&#xff0c;存储着索引值和这个值所对应的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09;使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先通过索引表找到该行数据对应…

NodeJS 集群模块: 为App创建集群实例

NodeJS 集群模块: 为App创建集群实例 目录 NodeJS 集群模块: 为App创建集群实例Node.js 集群介绍:终极扩展策略使用集群模块开始扩展 Node.js扩展 Node.js 的两种集群策略使用集群受益的 Node.js 应用程序示例没有集群的 Node.js:不可伸缩的原则集群操作:一个扩展的 Node.js…

全新体验|德克萨斯州奥斯汀市登陆 The Sandbox

以前所未有的方式探索德克萨斯州奥斯汀——The Sandbox迎来虚拟旅游&#xff0c;新体验由Smobler工作室打造。 我们的使命是为虚拟旅游创造新机遇&#xff0c;让每个人都能更方便地游览城市和国家。我们非常兴奋地宣布&#xff1a;Cobbleland&#xff1a;Austin&#xff0c;这款…

1.C#对接微信Native支付(准备工作)

近期有需求需要在PC网站接入微信支付&#xff0c;遂了解了一下相关文档。https://pay.weixin.qq.com/static/applyment_guide/applyment_index.shtml 官网文档种有多种支付对接方式比如&#xff1a;jsapi、native、app支付、小程序支付等。大家可自行了解&#xff0c;根据自身…

电子合同和纸质合同有同等法律效力吗?

根据《中华人民共和国民法典》的规定&#xff0c;电子合同是合同的一种形式&#xff0c;只要依法成立&#xff0c;就具有法律效力&#xff0c;和纸质合同具有同样的法律效力。同时&#xff0c;法律也认可了以电子数据交换、电子邮件等方式能够有形地表现所载内容&#xff0c;并…

深度解析:普通人运用ChatGPT10大经典场景,你用过几种?(内含使用教程)

本内容来源---布博士&#xff08;擎创产品专家&#xff09;公众号 很长时间没有更新ChatGPT相关内容了&#xff0c;最近一段时间一直在通过各种渠道了解大型语言模型&#xff0c;重点关注其在各个应用领域的使用情况&#xff0c;以此来了解其应用的边界。 在近两个月的学习过…

Emotion Prompt-LLM能够理解并能通过情感刺激得以增强

Large Language Models Understand and Can be Enhanced by Emotional Stimuli 情感智能对我们的日常行为和互动产生了显著的影响。尽管大型语言模型&#xff08;LLMs&#xff09;被视为向人工通用智能迈进的一大步&#xff0c;在许多任务中表现出色&#xff0c;但目前尚不清楚…

xercesc库中文保存XML功能实现

目录 一 参考链接 二 运行结果 三 代码 一 参考链接 DOM Programming Guide (apache.org) Xerces-c DOM XML文件的构造_xerces-c domimplementation-CSDN博客 Xerces-c库的使用-CSDN博客 二 运行结果 三 代码 #include "XercesC_Test.h"#if 1//参考链接&…

基于爬虫对山西省人口采集+机器学习的可视化平台

文章目录 数据来源一、研究背景与意义二、研究目标三、研究内容与方法四、预期成果五、代码讲解六、全文总结 数据来源 1.所有原数据均来自&#xff1a;国家统计局-政府的数据网站 2.涉及到的一些预测数据是根据现有数据进行预测而来。 本文从数据来源&#xff0c;研究意义&am…

ideaSSM博物馆网站系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 博物馆网站系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c…

基于单片机的实时水质监测系统设计

摘要:传统的水质监测存在人工成本高,取样时间长等诸多问题。为了解决这些问题,本文设计了一款基于单片机的实时水质监测系统,通过传感器采集到的数据,单片机通过zigbee 収送至云端,结合上位机软件可以实现实时的信息采集处理,实现了高敁、智能的水质监测工作。 兲键词:…