git中文件的状态状态切换
文件的状态分类
Git 中文件的状态主要分为以下几种:
-
Untracked(未跟踪)
-
定义:这些文件从未被 Git 跟踪过,通常是因为它们是新创建的文件,或者被
.gitignore
排除在外。 -
示例:新创建的文件
newfile.txt
,或者被.gitignore
排除的文件temp.log
。
-
-
Tracked(被跟踪)
-
定义:这些文件已经被 Git 添加到版本控制中,Git 会记录它们的修改。
-
进一步分类:
-
Unmodified(未修改):文件自上次提交后没有被修改。
-
Modified(已修改):文件自上次提交后被修改了,但尚未添加到暂存区。
-
Staged(已暂存):文件被修改后,通过
git add
添加到暂存区,准备提交。
-
-
3. git ls-files
这个命令用于显示已经被跟踪的文件,包括加入暂存区和已经提交的.
在 Git 中,文件的状态是指文件相对于 Git 仓库的当前情况。以下是一些常见的文件状态及其含义:
-
未跟踪(Untracked):
-
这是新创建的文件或从其他位置复制过来的文件,Git 还没有开始跟踪这些文件的更改。
-
这些文件不会出现在
git status
命令的 "Changes to be committed" 部分,而是出现在 "Untracked files" 部分。
-
-
已修改(Modified):
-
文件已经被修改,但还没有添加到暂存区。
-
这些文件出现在
git status
命令的 "Changes not staged for commit" 部分。
-
-
已暂存(Staged):
-
文件的修改已经被添加到暂存区,准备在下一次提交时被保存到仓库历史记录中。
-
这些文件出现在
git status
命令的 "Changes to be committed" 部分。
-
-
已提交(Committed):
-
文件的更改已经被提交到本地仓库,成为仓库历史记录的一部分。
-
提交后的文件不再出现在
git status
命令的输出中,除非你再次修改它。
-
文件状态的切换:
-
未跟踪(Untracked)-> 已暂存(Staged):
-
使用
git add <file>
命令将未跟踪的文件添加到暂存区。 -
或者,使用
git add .
命令将所有未跟踪的文件和已修改的文件添加到暂存区。
-
-
已修改(Modified)-> 已暂存(Staged):
-
使用
git add <file>
命令将已修改的文件添加到暂存区。
-
-
已暂存(Staged)-> 已修改(Modified):
-
使用
git reset <file>
命令将已暂存的文件从暂存区移除,使其回到已修改状态。
-
-
已暂存(Staged)-> 未跟踪(Untracked):
-
这种情况通常不会发生,因为文件一旦被添加到暂存区,Git 就开始跟踪它了。但是,你可以使用
git rm --cached <file>
命令从暂存区和 Git 仓库中删除文件,使其回到未跟踪状态。
-
-
已修改(Modified)-> 未跟踪(Untracked):
-
这种情况也不会发生,因为文件一旦被修改,Git 就开始跟踪它了。但是,你可以使用
git checkout -- <file>
命令将文件恢复到最后一次提交的状态,或者使用git rm <file>
命令从工作目录中删除文件。
-
-
已提交(Committed)-> 已修改(Modified):
-
修改已提交的文件,使其成为已修改状态。
-
-
已提交(Committed)-> 未跟踪(Untracked):
-
删除已提交的文件,使其成为未跟踪状态。
-
具体状态解释
Changes not staged for commit(已修改但未暂存)
-
状态:Modified(已修改)
-
含义:这些文件已经被 Git 跟踪(即之前被添加到版本控制中),但自上次提交后被修改了,且尚未通过
git add
添加到暂存区。 -
示例:
bash复制
git status
输出:
复制
On branch main Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: README.md
这里,
README.md
是一个被跟踪的文件,但它被修改了,且尚未暂存。
Changes to be committed(已暂存)
-
状态:Staged(已暂存)
-
含义:这些文件已经被修改,并且通过
git add
添加到了暂存区,准备在下一次提交时被记录到版本历史中。 -
示例:
bash复制
git add README.md git status
输出:
复制
On branch main Changes to be committed:(use "git reset HEAD <file>..." to unstage)modified: README.md
这里,
README.md
已经被修改并暂存,准备提交。
状态转换
-
从 Untracked 到 Tracked(通过
git add
)-
新文件
newfile.txt
是未跟踪的。 -
使用
git add newfile.txt
后,文件进入暂存区(Staged),并开始被跟踪。
-
-
从 Tracked 到 Modified
-
文件
README.md
已经被跟踪。 -
如果你修改了
README.md
,但尚未运行git add
,文件状态变为 Modified(已修改但未暂存)。
-
-
从 Modified 到 Staged
-
修改后的文件
README.md
处于 Modified 状态。 -
使用
git add README.md
后,文件状态变为 Staged(已暂存)。
-
-
从 Staged 到 Committed
-
暂存区中的文件
README.md
通过git commit
提交后,文件状态变为 Committed(已提交)。
-
总结
-
Changes not staged for commit:文件已经被跟踪(Tracked),但被修改后尚未暂存(Modified)。
-
Changes to be committed:文件已经被跟踪(Tracked),并且修改后已经暂存(Staged)。
-
修改文件内容:如果文件已经被跟踪,修改文件内容后,文件状态会从 Unmodified 变为 Modified。通过
git add
添加到暂存区后,状态变为 Staged。
相关文章:
git中文件的状态状态切换
文件的状态分类 Git 中文件的状态主要分为以下几种: Untracked(未跟踪) 定义:这些文件从未被 Git 跟踪过,通常是因为它们是新创建的文件,或者被 .gitignore 排除在外。 示例:新创建的文件 new…...
解决php8.3无法加载curl扩展
把它的值更改为扩展存在的目录的绝对路径(扩展存在的目录为有php_xxx.dll存在的目录) extension_dir "e:\serv\php83\ext" 然后从php根目录复制 libssh2.dll 和 libcrypto-*.dll 和 libssl-*.dll 到Apache根目录下的bin目录 重启apache服务即可...
三路排序算法
三路排序算法 引言 排序算法是计算机科学中基础且重要的算法之一。在数据分析和处理中,排序算法的效率直接影响着程序的执行速度和系统的稳定性。本文将深入探讨三路排序算法,包括其原理、实现和应用场景。 一、三路排序算法的原理 三路排序算法是一…...

入行FPGA设计工程师需要提前学习哪些内容?
FPGA作为一种灵活可编程的硬件平台,广泛应用于嵌入式系统、通信、数据处理等领域。很多人选择转行FPGA设计工程师,但对于新手来说,可能在学习过程中会遇到一些迷茫和困惑。为了帮助大家更好地准备,本文将详细介绍入行FPGA设计工程…...

DBASE DBF数据库文件解析
基于Java实现DBase DBF文件的解析和显示 JDK19编译运行,实现了数据库字段和数据解析显示。 首先解析数据库文件头代码 byte bytes[] Files.readAllBytes(Paths.get(file));BinaryBufferArray bis new BinaryBufferArray(bytes);DBF dbf new DBF();dbf.VersionN…...

html基本结构和常见元素
html5文档基本结构 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>文档标题</title> </head> <body>文档正文部分 </body> </html> html文档可分为文档头和文档体…...

JAVAweb学习日记(十) Mybatis入门操作
一、介绍 二、快速入门程序 三、入门-数据库连接池 四、入门-lombok工具包...

从Transformer到世界模型:AGI核心架构演进
文章目录 引言:架构革命推动AGI进化一、Transformer:重新定义序列建模1.1 注意力机制的革命性突破1.2 从NLP到跨模态演进1.3 规模扩展的黄金定律 二、通向世界模型的关键跃迁2.1 从语言模型到认知架构2.2 世界模型的核心特征2.3 混合架构的突破 三、构建…...

Rk3588芯片介绍(含数据手册)
芯片介绍:RK3588是一款低功耗,高性能的处理器,适用于基于arm的PC和边缘计算设备,个人移动互联网设备和其他数字多媒体应用,集成了四核Cortex-A76和四核Cortex-A55以及单独的NEON协处理器 视频处理方面:提供…...
java开发面试自我介绍模板_java面试自我介绍3篇
java 面试自我介绍 3 篇 java 面试自我介绍篇一: 我叫赵,我的同学更都喜欢称呼我的英文名字,叫,六月的 意思,是君的谐音。我来自安徽的市,在 21 年我以市全市第一名 的成绩考上了大学,…...

w193基于Spring Boot的秒杀系统设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

chrome浏览器chromedriver下载
chromedriver 下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 上面的链接有和当前发布的chrome浏览器版本相近的chromedriver 实际使用感受 chrome浏览器会自动更新,可以去下载最新的chromedriver使用,自动化中使用新的chromedr…...

【HTML入门】Sublime Text 4与 Phpstorm
文章目录 前言一、环境基础1.Sublime Text 42.Phpstorm(1)安装(2)启动Phpstorm(3)“启动”码 二、HTML1.HTML简介(1)什么是HTML(2)HTML版本及历史(3)HTML基本结构 2.HTML简单语法(1)HTML标签语法(2)HTML常用标签(3)表格(4)特殊字符 总结 前言 在当今的软件开发领域,…...

Python----Python高级(并发编程:进程Process,多进程,进程间通信,进程同步,进程池)
一、进程Process 拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度;进程切换需要的资源很最大,效率低。 对于操作系统来说,一个任务就是一个进程(Process)ÿ…...
汽车自动驾驶AI
汽车自动驾驶AI是当前汽车技术领域的前沿方向,以下是关于汽车自动驾驶AI的详细介绍: 技术原理 感知系统:自动驾驶汽车通过多种传感器(如激光雷达、摄像头、雷达、超声波传感器等)收集周围环境的信息。AI算法对这些传感…...

Linux之安装MySQL
1、查看系统当前版本是多少位的 getconf LONG_BIT2.去官网下载对应的MYSQL安装包 这里下载的是8版本的,位数对应之前的64位 官网地址:https://downloads.mysql.com/archives/community/ 3.上传压缩包 4.到对应目录下解压 tar -xvf mysql-8.0.26-lin…...

说说Redis的内存淘汰策略?
大家好,我是锋哥。今天分享关于【说说Redis的内存淘汰策略?】面试题。希望对大家有帮助; 说说Redis的内存淘汰策略? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 提供了多种内存淘汰策略,用于在内存达到限制时决定如何…...
SQL范式与反范式_优化数据库性能
1. 引言 什么是SQL范式 SQL范式是指数据库设计中的一系列规则和标准,旨在减少数据冗余、提高数据完整性和一致性。常见的范式包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(Boyce-Codd范式)。 什么是SQL反范式 SQL反范式是指在满足范式要求的基础上,有…...
从BIO到NIO:Java IO的进化之路
引言 在 Java 编程的世界里,输入输出(I/O)操作是基石般的存在,从文件的读取写入,到网络通信的数据传输,I/O 操作贯穿于各种应用程序的核心。BIO(Blocking I/O,阻塞式 I/O࿰…...

Mysql:数据库
Mysql 一、数据库概念?二、MySQL架构三、SQL语句分类四、数据库操作4.1 数据库创建4.2 数据库字符集和校验规则4.3 数据库修改4.4 数据库删除4.4 数据库备份和恢复其他 五、表操作5.1 创建表5.2 修改表5.3 删除表 六、表的增删改查6.1 Create(创建):数据新增1&#…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...