Git 中的工作区(Working Directory)、暂存区(Staging Area 或 Index)、提交区(Repository)

在 Git 中,工作区(Working Directory)、暂存区(Staging Area 或 Index)、提交区(Repository)是三个核心概念,它们分别代表不同的文件状态和存储位置。以下是它们的详细解释及其关联:

1.

工作区(Working Directory)

含义

工作区是你在本地计算机上看到和编辑的实际文件目录。这里的文件是你正在开发、编辑的文件。

功能
  • 存放你当前正在编辑的文件和目录。
  • 文件可以是未追踪的(未被 Git 管理)、已追踪但未修改的、已修改但未暂存的。

2.

暂存区(Staging Area)

含义

暂存区是一个临时区域,用于记录将要提交的更改。你可以将工作区的更改添加到暂存区,然后再一次性提交到提交区。

功能
  • 存储准备提交的文件快照。
  • 允许你分次添加更改,并在提交前查看和调整这些更改。

3.

提交区(Repository)

含义

提交区是 Git 仓库中的实际存储区域。每一次提交(commit)都会创建一个快照,永久保存文件的状态。

功能
  • 保存所有提交历史和版本信息。
  • 每次提交都是不可变的,形成了项目的版本历史。

下面使用例子来加深理解

这三个区域之间通过特定的 Git 命令进行交互。以下是常见的交互流程和命令:

  1. 工作区到暂存区

    • 命令git add
    • 功能:将工作区的更改(新增、修改或删除的文件)添加到暂存区,以便在下一次提交时包含这些更改。如git add file.txt
  2. 暂存区到提交区:                                                                                                                   1.命令git commit                                                                                                              2.功能:将暂存区的更改提交到提交区,生成一个新的提交快照。git commit -m "Add new feature"

  3. 提交区到工作区:                                                                                                                   1.命令git checkoutgit reset 等                                                                                   2.功能:从提交区检出某个版本或重置工作区,以恢复某个版本的状态。示例:git checkout HEAD~1

工作区(Working Directory)|| git addv
暂存区(Staging Area)|| git commitv
提交区(Repository)

示例流程

假设你正在开发一个项目,目录结构如下:

project/ ├── file1.txt └── file2.txt

  1. 修改文件: 你在工作区修改了 file1.txtfile2.txt

  2. 将更改添加到暂存区

    git add file1.txt       git add file2.txt

  3. 提交暂存区的更改

    git commit -m "Update file1 and file2"

此时,工作区、暂存区和提交区的状态如下:

  • 工作区file1.txtfile2.txt 保持已修改的状态。
  • 暂存区:包含 file1.txtfile2.txt 的最新快照。
  • 提交区:生成了一个新的提交,记录了 file1.txtfile2.txt 的更改。

通过这些步骤,文件从工作区通过暂存区最终提交到提交区,形成了一个完整的版本控制流程。这三个区域相互协作,确保代码的管理、追踪和回滚。

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

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

相关文章

Linux_make/Makefile的理解

1.make是一个命令,makefile是一个文件, 依赖关系和依赖方法. a.快速使用一下 i.创建一个Makefile文件(首字母也可以小写) b.依赖关系和依赖方法 i.依赖关系: 我为什么要帮你? mybin:mytest.c ii.依赖方法: 怎么帮? gcc -o mybin mytest.c make之前要注意先创建…

探索LLM世界:新手小白的学习路线图

随着人工智能的发展,语言模型(Language Models, LLM)在自然语言处理(NLP)领域的应用越来越广泛。对于新手小白来说,学习LLM不仅能提升技术水平,还能为职业发展带来巨大的机遇。那么,…

CycloneIV 使用MAX7219驱动数码管

MAX7219驱动数码管的代码,C语言有大把的代码参考,实现的原理这里我就不细说了,其他博主说得很详细,但是Verilog的代码并没有很多,因此,这里我封装好了代码,仅需根据自己的需要去配置就可以 mod…

Linux(虚拟机)的介绍

Linux介绍 常见的操作系统 Windows:微软公司开发的一款桌面操作系统(闭源系统)。版本有dos,win98,win NT,win XP , win7, win vista. win8, win10,win11。服务器操作系统:winserve…

Linux中将文件解压到指定目录

在Linux中,你可以使用以下命令将压缩文件解压到指定的目录: 对于.tar文件: tar -xvf archive.tar -C /path/to/directory这里的archive.tar是你要解压的.tar文件,/path/to/directory是你想要解压到的目标目录。 对于.tar.gz或.…

conda issue

Conda 是一个跨平台、通用的二进制包管理器。它是 Anaconda 安装使用的包管理器,但它也可能用于其他系统。Conda 完全用 Python 编写,并且是 BSD 许可的开源。通用意味着大部分的包都可以用它进行管理,很像一个跨平台版本的apt或者yum&#x…

vue3 父组件 props 异步传值,子组件接收不到或接收错误

1. 使用场景 我们在子组件中通常需要调用父组件的数据,此时需要使用 vue3 的 props 进行父子组件通信传值。 2. 问题描述 那么此时问题来了,在使用 props 进行父子组件通信时,因为数据传递是异步的,导致子组件无法成功获取数据…

汇川CodeSysPLC教程03-2-6 ModBus TCP

什么是ModBus TCP? ModBus TCP是一种基于TCP/IP协议的工业网络通信协议,常用于工业自动化和控制系统。它是ModBus协议的一个变种,ModBus协议最初由Modicon(现在是施耐德电气的一部分)在1979年开发。 以下是ModBus TC…

【gradle】在test apk中定义SDK编译和拷贝任务

// 定义一个任务来编译 AAR 并拷贝到自定义位置 tasks.register(‘compileAndCopyAAR’) { exec { commandLine ‘cmd’, “/c”, “cd …/…/ &&” ‘gradlew SDK:assembleRelease’ } copy {from("../../SDK/build/outputs/aar/") {include SDK-release.…

数据治理之“财务一张表”

前言 信息技术的发展,伴随企业业务系统的纷纷建设,提升业务处理效率的同时,也将企业的整体主价值链流程分成了一段一段的业务子流程,很多情况下存在数据上报延迟、业务协作不顺畅、计划反馈不及时、库存积压占资多……都可以从数据…

【Android】linux

android系统就是跑在linux上的系统。Linux层里面包含系统和硬件驱动等一些本地代码的环境。 linux的目录 mount: 用于查看哪个模块输入只读,一般显示为: [rootlocalhost ~]# mount /dev/cciss/c0d0p2 on / type ext3 (rw) proc on /proc type proc (…

Spring AI (五) Message 消息

5.Message 消息 在Spring AI提供的接口中,每条信息的角色总共分为三类: SystemMessage:系统限制信息,这种信息在对话中的权重很大,AI会优先依据SystemMessage里的内容进行回复; UserMessage:用…

IM聊天代码

客户端 Headers inet inet.h #pragma once #include<Winsock2.h>//#pragma comment(lib,"Ws2_32.lib")class INetMediator; class INet { public:INet(){}virtual ~INet(){}//初始化网络virtual bool initNet() 0;//接收数据virtual void recvData() 0;…

每日一知识点 - Java Lambda 表达式

目录 &#x1f4dd; 每日一知识点Lambda 表达式1、基本概念2、使用示例 &#x1f4ce; 参考文章 &#x1f600; 准备好了吗&#xff1f;让我们一起步入这座Java神奇的城堡&#xff0c;揭开Java Lambda 表达式的神秘面纱&#xff0c;探索其中的奥秘。 &#x1f4dd; 每日一知识点…

PlatformIO+ESP32S3学习:驱动WS2812矩阵彩灯显示FFT音律拾音灯

本文继承自之前的彩灯驱动文章&#xff1a;https://blog.csdn.net/qq_51930953/article/details/140736628 本文完成的效果&#xff1a; 1. 硬件准备 1.1. WS2812矩阵彩灯 购买地址&#xff1a;WS2812B全彩软像素屏8X8 8X32 16X16幻彩5V显示可编程像素软屏 1.2. 麦克风模块 购…

Ip2region - 基于xdb离线库的Java IP查询工具提供给脚本调用

文章目录 Pre效果实现git clone编译测试程序将ip2region.xdb放到指定目录使用改进最终效果 Pre OpenSource - Ip2region 离线IP地址定位库和IP定位数据管理框架 Ip2region - xdb java 查询客户端实现 效果 最终效果 实现 git clone git clone https://github.com/lionsou…

YOLOV8源码解读-C2f模块-以及总结c2模块、Bottleneck

c2f模块是对c2模块的改进 c2模块图解解读 先给出YOLOV8中卷积的定义模块一键三连-卷积-BN-激活函数 def autopad(k, pNone, d1): # kernel, padding, dilation"""Pad to same shape outputs."""if d > 1:k d * (k - 1) 1 if isinstance…

洛谷 P7771:【模板】欧拉路径

【题目来源】https://www.luogu.com.cn/problem/P7771【题目描述】 求有向图字典序最小的欧拉路径。【输入格式】 第一行两个整数 n,m 表示有向图的点数和边数。 接下来 m 行每行两个整数 u,v 表示存在一条 u→v 的有向边。【输出格式】 如果不存在欧拉路径&#xff0c;输出一行…

在模型中bert和transform讲解

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;BERT 和 Transformer 是两个非常重要的概念。下面是它们的简要解释&#xff1a; 一 、BERT BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是由Google提出的一种预训练语言…

Docker与Kubernetes在Java微服务中的应用

引言 随着微服务架构的普及,容器化技术成为部署和管理微服务的重要手段。Docker 提供了一种轻量级的容器解决方案,而 Kubernetes 则成为了容器编排和管理的事实标准。本文将深入探讨如何将 Java 微服务容器化,并在 Kubernetes 上部署和管理这些服务。 容器化概述 1. 容器…