文章目录

  • Git(二):基本操作
    • 添加文件
    • 修改文件
    • 版本回退
    • 撤销修改
      • 情况一:工作区的代码还没有 add
      • 情况⼆:已经 add 但没有 commit
      • 情况三:已经 add 并且也 commit
    • 删除文件

Git(二):基本操作

添加文件

首先我们先来学习一个命令git status,其基本功能为:

  • 显示工作目录状态:git status 会列出当前工作目录中哪些文件被修改(modified)、未跟踪(untracked)或存在冲突(conflict)
  • 显示暂存区状态:显示哪些文件已暂存(staged)但未提交,以及哪些文件未暂存但已修改
  • 分支信息:输出当前分支名称及与远程分支的同步状态(如 “Your branch is up to date with ‘origin/master’”)

例如,我们在工作区中创建一个文件但并没有add,使用git status就会给出提示:file1并没有被追踪,同时暂存区中是干净的

在这里插入图片描述

我们add后不commit,再来看一下status:暂存区中有文件等待被commit

在这里插入图片描述

commit之后暂存区就干净了:

在这里插入图片描述

修改文件

首先,我们要明确一个概念:Git跟踪并管理的是修改,而非文件,这也是Git 比其他版本控制系统设计得优秀的主要原因之一

什么是修改?比如你新增了一行,这就是⼀个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚⾄创建一个新文件,也算一个修改

让我们将 ReadMe 文件进行一次修改,此时,仓库中的 ReadMe 和我们⼯作区的 ReadMe 是不同的, 使用git status 命令查看:

在这里插入图片描述

上⾯的结果告诉我们,ReadMe 被修改过了,但还没有完成添加与提交。目前,我们只知道文件被修改了,但不知道那里被修改了,这时就需要git diff命令出马了:

在这里插入图片描述

git diff [file] 命令⽤来显⽰暂存区和⼯作区⽂件的差异,显⽰的格式正是Unix通⽤的diff格式。也可以使⽤ git diff HEAD -- [file] 命令来查看版本库和⼯作区⽂件的区别

接下来只需要正常add和commit即可

版本回退

之前我们也提到过,Git 能够管理⽂件的历史版本,这也是版本控制器重要的能⼒。如果有⼀天你发现之前的⼯作做的出现了很⼤的问题,需要在某个特定的历史版本重新开始,这个时候,就需要版本回退的功能

执⾏ git reset 命令⽤于回退版本,可以指定退回某⼀次提交的版本。要解释⼀下“回退”本质是要将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定:

git reset 命令语法格式为: git reset [--soft | --mixed | --hard] [HEAD]

  • –mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。
  • –soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本
  • –hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重

在上面我们对ReadMe文件新增了一行“hello world!”,现在我们使用表格来展现:

选项工作区暂存区版本库
未操作hello git hello worldhello git hello worldhello git hello world
–softhello git hello worldhello git hello worldhello git
–mixed(默认)hello git hello worldhello githello git
–hardhello githello githello git

HEAD选项说明:

  • 可直接写成 commit id,表示指定退回的版本
  • HEAD 表示当前版本
  • HEAD^ 上⼀个版本
  • HEAD^^ 上上⼀个版本

也可以使⽤ 〜数字表示:

  • HEAD~0 表示当前版本
  • HEAD~1 上⼀个版本
  • HEAD^2 上上⼀个版本

接下来我们演示一下:ReadMe文件经修改后现在有两行,commit后master指向最后一次修改

在这里插入图片描述

接下来使用reset命令,带上hard选项,HEAD直接写成ReadMe文件第一次修改的commit id

在这里插入图片描述

我们发现ReadMe文件回退到了第一个版本,而且file1也被删除了,因为file1是在之后创建的

那我们要是后悔了怎么办?只需要把commit id改成modify ReadMe的:
在这里插入图片描述

我们发现ReadMe文件“回退”到了第二个版本,file1也回来了,HEAD重新指向了modify ReadMe

但是如果我们隔了几天重新登陆服务器,找不到对应的历史commit id怎么办?此时就用到了git reflog命令:

在这里插入图片描述

值得说的是,Git 的版本回退速度⾮常快,因为 Git 在内部有个指向当前分⽀(此处是master)的

HEAD 指针, refs/heads/master ⽂件⾥保存当前 master 分⽀的最新 commit id 。当我们

在回退版本的时候,Git 仅仅是给 refs/heads/master 中存储⼀个特定的version,可以简单理解

成如下⽰意图:

在这里插入图片描述

撤销修改

如果我们在我们的⼯作区写了很⻓时间代码,越写越写不下去,觉得⾃⼰写的实在是垃圾,想恢复到 上⼀个版本

情况一:工作区的代码还没有 add

我们在ReadMe文件中新增一行,不add到暂存区

在这里插入图片描述
第一种方法就是直接修改,但如果不记得新增代码是哪些呢?因此这种方式效率很低,而且容易出错,此时就需要用到git checkout -- [file]命令,git checkout -- [file] 命令可以让工作区的文件回到最近⼀次add 或commit 时的状态。要注意 git checkout -- [file] 命令中的 – 很重要,切记不要省略,⼀旦省略,该命令就变为其他意思了,后面我们再说

在这里插入图片描述

情况⼆:已经 add 但没有 commit

add后还是保存到了暂存区呢?怎么撤销呢?

在这里插入图片描述

让我们来回忆⼀下学过的 git reset 回退命令,该命令如果使用–mixed 参数,可以将暂存区 的内容退回为指定的版本内容,但⼯作区⽂件保持不变。那我们就可以回退下暂存区的内容了!!!

在这里插入图片描述

此时就变成了第一种情况,再使用git checkout -- [file] 命令就可以了

在这里插入图片描述

情况三:已经 add 并且也 commit

直接使用git reset --hard HEAD^ 命令回退到上⼀个版本!不过,这是有条件的,就是 你还没有把自己的本地版本库推送到远程(后面会讲)

在这里插入图片描述

我们使用表格对上面三种情况进行总结:

操作工作区暂存区版本库
git check – [filename]xxx code
git reset --mixedxxx codexxx code
git reset --hard HEAD^xxx codexxx codexxx code

注:xxx code是新增内容,空白表示未新增

删除文件

第一种方法:

  1. 在工作区中执行rm -f 文件名命令
  2. git add
  3. git commit

在这里插入图片描述

第二种方法:

  1. 在工作区中执行git rm 文件名命令
  2. git commit
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84201.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84201.shtml
英文地址,请注明出处:http://en.pswp.cn/web/84201.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx + ffmpeg 实现 rtsp视频实时播放和历史播放

nginx和ffmpeg 的安装请参考我的另一篇文章 Nginxrtmpffmpeg搭建视频转码服务_nginx-rtmp-module-master-CSDN博客 目录 1、整体方案设计如图 2、nginx下目录创建和配置文件创建 3、创建视频流生成脚本 4、修改nginx配置 5、管理界面 (video.html) 6、ffmpeg后台启动 …

全国产!瑞芯微 RK3576 ARM 八核 2.2GHz 工业核心板—硬件说明书

前 言 本文为创龙科技 SOM-TL3576 工业核心板硬件说明书,主要提供 SOM-TL3576 工业 核心板的产品功能特点、技术参数、引脚定义等内容,以及为用户提供相关电路设计指导。 为便于阅读,下表对文档出现的部分术语进行解释;对于广泛认同释义的术语,在此不做注释。 硬件参考…

web3 浏览器注入 (如 MetaMask)

以下是关于 浏览器注入方式(如 MetaMask) 的完整详解,包括原理、使用方法、安全注意事项及常见问题解决方案: 1. 核心原理 当用户安装 MetaMask 等以太坊钱包扩展时,钱包会向浏览器的 window 对象注入一个全局变量 window.ethereum,这个对象遵循 EIP-1193 标准,提供与区…

解密提示词工程师:AI 时代的新兴职业

大家好!在人工智能飞速发展的当下,有一个新兴职业正悄然崛起——提示词工程师。他们虽不如数据科学家般广为人知,却在 AI 应用领域发挥着独特且关键的作用。 何为提示词工程师? 提示词工程师专注于设计和优化与 AI 模型进行交互的提示词&…

linux 下 jenkins 构建 uniapp node-sass 报错

背景: jenkins 中构建 uniapp 应用 配置: 1. 将windows HbuilderX 插件目录下的 uniapp-cli 文件夹复制到 服务器 /var/jenkins_home/uniapp-cli 2. jenkins 构建步骤增加 执行 shell ,内容如下 echo ">> 构建中..."# 打包前端 export LANGen_US.UTF-8…

QT常见问题(1)

QT常见问题(1) 1.问题描述 Qt在编译器中直接运行没有任何问题,但是进入exe生成目录直接双击运行就报错:文件无法定位程序输入点_zn10qarraydata10deallocateepsyy于动态链接库。 2.问题原因 这个错误通常是由于程序运行时找不…

『大模型笔记』第2篇:并发请求中的 Prefill 与 Decode:优化大语言模型性能

『大模型笔记』并发请求中的 Prefill 与 Decode:优化大语言模型性能 文章目录 一. Token 生成的两个阶段:Prefill 和 Decode1.1. 指标分析1.2. 资源利用率分析二. 并发处理机制2.1. 静态批处理 vs 持续批处理(Static Batching vs. Continuous Batching)2.2. Prefill 优先策略…

JVM(7)——详解标记-整理算法

核心思想 标记-整理算法同样分为两个主要阶段,但第二个阶段有所不同: 标记阶段: 与标记-清除算法完全一致。遍历所有可达对象(从 GC Roots 开始),标记它们为“存活”。 整理阶段: 不再简单地清…

进程虚拟地址空间

1. 程序地址空间回顾 我们在学习语言层面时,会了解到这样的空间布局图,我们先对他进行分区了解: 如果以静态static修饰的变量就会当成已初始化全局变量来看待,存放在已初始化数据区和未初始化数据区之前。 如果不用static修饰test…

C语言学习day17-----位运算

目录 1.位运算 1.1基础知识 1.1.1定义 1.1.2用途 1.1.3软件控制硬件 1.2运算符 1.2.1与 & 1.2.2或 | 1.2.3非 ~ 1.2.4异或 ^ 1.2.5左移 << 1.2.6右移 >> 1.2.7代码实现 1.2.8置0 1.2.9置1 1.2.10不借助第三方变量&#xff0c;实现两个数的交换…

【linux】简单的shell脚本练习

简单易学 解释性语言&#xff0c;不需要编译即可执行 对于一个合格的系统管理员来说&#xff0c;学习和掌握Shell编程是非常重要的&#xff0c;通过shell程序&#xff0c;可以在很大程度上简化日常的维护工作&#xff0c;使得管理员从简单的重复劳动中解脱出来 用户输入任意两…

机构运动分析系统开发(Python实现)

机构运动分析系统开发(Python实现) 一、引言 机构运动分析是机械工程的核心内容,涉及位置、速度和加速度分析。本系统基于Python开发,实现了平面连杆机构的完整运动学分析,包含数学建模、数值计算和可视化功能。 二、系统架构设计 #mermaid-svg-bT8TPKQ98UU9ERet {font…

工程师生活:清除电热水壶(锅)水垢方法

清除电热水壶&#xff08;锅&#xff09;水垢方法 水垢是水加热时自然形成的钙质沉淀物&#xff0c;常粘附在水壶内壁及发热盘上。它不仅影响水的品质&#xff0c;还会缩短水壶的使用寿命&#xff0c;因此需要定期清除。建议根据各地水质不同&#xff0c;每年除垢 2 至 4 次。…

[分布式并行策略] 数据并行 DP/DDP/FSDP/ZeRO

上篇文章【[论文品鉴] DeepSeek V3 最新论文 之 DeepEP】 介绍了分布式并行策略中的EP&#xff0c;简单的提到了其他几种并行策略&#xff0c;但碍于精力和篇幅限制决定将内容分几期&#xff0c;本期首先介绍DP&#xff0c;但并不是因为DP简单&#xff0c;相反DP的水也很深&…

LeeCode144二叉树的前序遍历

项目场景&#xff1a; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 解释&#xff1a; 示例 2&#xff1a; 输入&#xff1a;root [1,2,3,4,5,null,8,null,null,6,7…

日本生活:日语语言学校-日语作文-沟通无国界(3)-题目:わたしの友達

日本生活&#xff1a;日语语言学校-日语作文-沟通无国界&#xff08;&#xff13;&#xff09;-题目&#xff1a;わたしの友達 1-前言2-作文原稿3-作文日语和译本&#xff08;1&#xff09;日文原文&#xff08;2&#xff09;对应中文&#xff08;3&#xff09;对应英文 4-老师…

使用 rsync 拉取文件(从远程服务器同步到本地)

最近在做服务器迁移&#xff0c;文件好几个T。。。。只能单向访问&#xff0c;服务器。怎么办&#xff01;&#xff01;&#xff01; 之前一直是使用rsync 服务器和服务器之间的双向同步、备份&#xff08;这是推的&#xff09;。现在服务器要迁移&#xff0c;只能单向访问&am…

Linux 并发编程:从线程池到单例模式的深度实践

文章目录 一、普通线程池&#xff1a;高效线程管理的核心方案1. 线程池概念&#xff1a;为什么需要 "线程工厂"&#xff1f;2. 线程池的实现&#xff1a;从 0 到 1 构建基础框架 二、模式封装&#xff1a;跨语言线程库实现1. C 模板化实现&#xff1a;类型安全的泛型…

2013年SEVC SCI2区,自适应变领域搜索算法Adaptive VNS+多目标设施布局,深度解析+性能实测

目录 1.摘要2.自适应局部搜索原理3.自适应变领域搜索算法Adaptive VNS4.结果展示5.参考文献6.代码获取7.算法辅导应用定制读者交流 1.摘要 VNS是一种探索性的局部搜索方法&#xff0c;其基本思想是在局部搜索过程中系统性地更换邻域。传统局部搜索应用于进化算法每一代的解上&…

详细介绍医学影像显示中窗位和窗宽

在医学影像&#xff08;如DICOM格式的CT图像&#xff09;中&#xff0c;**窗宽&#xff08;Window Width, WW&#xff09;和窗位&#xff08;Window Level, WL&#xff09;**是两个核心参数&#xff0c;用于调整图像的显示对比度和亮度&#xff0c;从而优化不同组织的可视化效果…