【Git】5 个分区的切换方式及示例

news2025/4/4 0:14:25

LuckiBit

目录

    • 1. **工作区(Working Directory)**
    • 2. **缓存区(Stage/Index)**
    • 3. **本地仓库(Local Repository)**
    • 4. **远程仓库(Remote Repository)**
    • 5. **贮藏区(Stash)**
    • 6. **完整的 Git 分区切换场景示例**
      • **6.1 查看当前状态**
      • **6.2 从工作区切换到缓存区**
      • **6.3 从缓存区切换到本地仓库**
      • **6.4 从本地仓库推送到远程仓库**
      • **6.5 从远程仓库拉取更新**
      • **6.6 进行代码存储(使用贮藏区)**
    • **总结**
    • 7. **结束语**

在 Git 中,五个分区(贮藏区、工作区、缓存区、本地仓库、远程仓库)之间的切换涉及不同的 Git 命令。以下是各个分区的切换方式:


1. 工作区(Working Directory)

这是你正在编辑代码的地方,就是本地的文件夹。

  • 从本地仓库切换到工作区(检出代码)

    git checkout <branch-name>  # 切换到某个分支
    git checkout <commit-hash> -- <file>  # 还原某个文件到指定版本
    
  • 从缓存区撤销到工作区(取消 git add

    git reset HEAD <file>  # 取消暂存,回到工作区
    

2. 缓存区(Stage/Index)

git add 之后的文件进入缓存区(暂存区)。

  • 从工作区切换到缓存区(添加到暂存区)

    git add <file>  # 添加文件到暂存区
    git add .       # 添加所有修改的文件到暂存区
    
  • 从缓存区切换回工作区(撤销暂存)

    git reset HEAD <file>  # 取消暂存
    

3. 本地仓库(Local Repository)

git commit 之后的文件进入本地仓库。

  • 从缓存区切换到本地仓库(提交到本地仓库)

    git commit -m "提交信息"  # 提交暂存区的文件到本地仓库
    
  • 从本地仓库切换到工作区(回退提交)

    git reset --soft HEAD~1  # 回退上一次提交,但保留暂存区的修改
    git reset --mixed HEAD~1 # 回退上一次提交,同时撤销暂存区的修改
    git reset --hard HEAD~1  # 回退上一次提交,并丢弃所有修改
    

4. 远程仓库(Remote Repository)

git push 之后,提交进入远程仓库。

  • 从本地仓库推送到远程仓库

    git push origin <branch-name>  # 推送到远程分支
    
  • 从远程仓库拉取到本地仓库

    git fetch origin <branch-name>  # 获取远程分支更新,但不合并
    git pull origin <branch-name>   # 拉取远程更新并合并
    

5. 贮藏区(Stash)

贮藏区用于临时保存当前的工作状态,方便切换分支或同步代码。

  • 从工作区/缓存区切换到贮藏区(存储当前进度)

    git stash        # 暂存当前工作区和缓存区的修改
    git stash push -m "描述"  # 带描述的 stash
    
  • 从贮藏区恢复到工作区/缓存区

    git stash pop    # 恢复最新的 stash 并删除
    git stash apply  # 应用最新的 stash 但不删除
    
  • 查看贮藏区内容

    git stash list   # 查看所有存储的状态
    git stash show   # 查看最近一次的 stash 详情
    

6. 完整的 Git 分区切换场景示例

假设你正在开发一个网站项目 my_project,你要修改 index.html 文件,并将代码提交到远程仓库。


6.1 查看当前状态

首先,确认你的 Git 仓库状态:

git status

如果 index.html 已修改,Git 会显示:

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)
	modified:   index.html

此时 index.html 处于 工作区


6.2 从工作区切换到缓存区

将修改添加到缓存区:

git add index.html

再次运行 git status

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   index.html

此时 index.html 进入 缓存区


6.3 从缓存区切换到本地仓库

提交代码:

git commit -m "更新首页内容"

输出:

[main 123abc] 更新首页内容
 1 file changed, 5 insertions(+)

此时 index.html 已存入 本地仓库


6.4 从本地仓库推送到远程仓库

git push origin main

输出:

Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 345 bytes | 345.00 KiB/s, done.
To github.com:user/my_project.git
   456def..123abc  main -> main

代码成功推送到 远程仓库


6.5 从远程仓库拉取更新

如果有其他人修改了代码,你可以同步远程仓库:

git pull origin main

如果有新代码更新,Git 会自动合并到你的 本地仓库工作区


6.6 进行代码存储(使用贮藏区)

假设你正在修改 style.css,但需要切换分支处理其他问题:

git stash

Git 会显示:

Saved working directory and index state WIP on main: 123abc 更新首页内容

此时 style.css 进入 贮藏区

当你完成其他任务后,恢复代码:

git stash pop

代码恢复到 工作区缓存区


总结

操作命令
工作区 → 缓存区git add <file>
缓存区 → 本地仓库git commit -m "message"
本地仓库 → 远程仓库git push origin <branch>
远程仓库 → 本地仓库git fetch / git pull
缓存区 → 工作区(撤销暂存)git reset HEAD <file>
本地仓库 → 工作区(回退提交)git reset --soft/mixed/hard HEAD~1
工作区/缓存区 → 贮藏区git stash
贮藏区 → 工作区/缓存区git stash pop / git stash apply

这样,你可以自由切换 Git 的五个分区 🚀

7. 结束语

  1. 本节内容已经全部介绍完毕,希望通过这篇文章,大家对 Git 有了更深入的理解和认识。
  2. 感谢各位的阅读和支持,如果觉得这篇文章对你有帮助,请不要吝惜你的点赞和评论,这对我们非常重要。再次感谢大家的关注和支持!点我关注❤️

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

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

相关文章

Java高频面试之并发编程-02

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;进程和线程的区别是什么&#xff1f; 1. 资源分配与独立性 进程&#xff1a; 独立性&#xff1a;每个进程拥有独立的内存…

openwebui和keycloak集成,使用keycloak的用户名和密码登录

1&#xff0c;实现效果 使用keycloak定义的用户名和密码&#xff0c;直接登录openwebui 2&#xff0c;实现原理 keycloak中用户信息中包含用户名和密码&#xff0c;以及email。 使用keycloak中的用户名和密码登录之后&#xff0c;会用email创建一个openwebui的账号。之后每次…

【区块链安全 | 第八篇】多签机制及恶意多签

部分参考&#xff1a;慢雾科技 文章目录 为什么需要多签多签机制Tron钱包下的恶意多签Tron 钱包多签权限分类Tron 多签机制的运作方式 恶意多签的过程黑客通过多签机制控制账户黑客剥夺用户权限&#xff0c;完全控制账户 恶意多签成因 在区块链中&#xff0c;多签&#xff08;M…

二月公开赛Web-ssrfme

目录 环境搭建 题目分析 分析代码 解题过程 Redis未授权访问 寻找Flag 环境搭建 进入含有docker-compose.yml的文件内&#xff0c;拉取容器镜像 docker-compose up -d 题目分析 访问容器地址172.25.254.200:8091查看题目 分析代码 url通过GET请求访问界面&#xff0c…

告别枯燥工作,走向自动化

嘿&#xff0c;小伙伴们&#xff01;今天给你们介绍两款超实用的RPA办公自动化软件&#xff0c;用它们&#xff0c;再也不用像机器一样做重复劳动啦&#xff0c;超省时间&#xff01; 工具名称&#xff1a;影刀RPA&#xff08;类似产品&#xff0c;八爪鱼 RPA&#xff0c;操作上…

可信数据空间:构筑安全可控数据流通

前言&#xff1a;可信数据空间是一种数据基础设施&#xff0c;发展可信数据空间是全国及各地数据基础设施建设的重要方面。国内数据空间的探索和实践仍然数据探索阶段。本期分享&#xff1a;可信数据空间构筑安全可控数据流通&#xff0c;包括可信数据空间技术介绍、如何助力数…

Zookeeper特性与节点数据类型

数据结构和监听机制 CP 文件系统形式存储 观察者模式监听节点数据变化、 临时节点客户端超时或发生异常节点就会删除 2888同步数据 3888选举端口 1.什么是Zookeeper ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来…

处理 Linux 信号:进程控制与异常管理的核心

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 在 Linux 操作系统中&#xff0c;信号是用于进程间通信的一种机制&#xff0c;能够向进程发送通知&#xff0c;指示某些事件的发生。信号通常由操作系统内核、硬件中断或其他进程发送。接收和处理信号是 Li…

【蓝桥杯每日一题】4.1

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x "今日秃头刷题&#xff0c;明日荣耀加冕&#xff01;" 今天我们来练习二分算法 不熟悉二分算法的朋友可以看&#xff1a;【C语言刷怪篇】二分法_编程解决算术问题-CSDN博客 …

分享系列项目的基础项目

本人分享了一系列的框架项目&#xff0c;它们共同需要依赖这个公共基础&#xff0c;结构如下图所示&#xff1a; 其中&#xff1a; audit: JPA的审计信息基础类auth&#xff1a;认证授权相关类config: 包括redis配置&#xff0c;client中token配置&#xff0c;openai文档配置…

为 MinIO AIStor 引入模型上下文协议(MCP)服务器

Anthropic 最近宣布的模型上下文协议 &#xff08;MCP&#xff09; 将改变我们与技术交互的方式。它允许自然语言通信替换许多任务的复杂命令行语法。不仅如此&#xff0c;语言模型还可以总结传统工具的丰富输出&#xff0c;并以人类可读的形式呈现关键信息。MinIO 是世界领先的…

数据结构实验1.1: 顺序表的操作及其应用

这里写自定义目录标题 一、实验目的二、注意事项三、实验内容&#xff08;一&#xff09;问题描述&#xff08;二&#xff09;基本要求 四&#xff0c;操作步骤&#xff08;一&#xff09;使用visual studio集成环境编写程序 五&#xff0c;示例代码六&#xff0c;运行效果 一、…

基于yolov11的汽车损伤检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv11的汽车损伤检测系统是一种先进的计算机视觉技术&#xff0c;旨在快速准确地识别汽车的各种损伤类型。该系统利用YOLOv11模型的强大性能&#xff0c;实现了对车辆损伤的精确检测与分类。 该系统能够识别的损伤类型包括裂纹&#xff08;crack&#xff…

基于Spring Boot的平面设计课程在线学习平台系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

【JavaEE】MyBatis - Plus

目录 一、快速使用二、CRUD简单使用三、常见注解3.1 TableName3.2 TableFiled3.3 TableId 四、条件构造器4.1 QueryWrapper4.2 UpdateWrapper4.3 LambdaQueryWrapper4.4 LambdaUpdateWrapper 五、自定义SQL 一、快速使用 MyBatis Plus官方文档&#xff1a;MyBatis Plus官方文档…

【2】数据结构的单链表章

目录标题 单链表的定义单链表的初始化单链表的建立头插法创建尾插法创建 查找操作按序号查找按内容查找 插入操作删除操作合并操作 单链表总代码与调试 单链表的定义 结点&#xff08;Node&#xff09;的定义&#xff1a;数据域&#xff08;data&#xff09;和指针域&#xff…

Linux(十一)fork实例练习、文件操作示例及相关面试题目分享

一、fork实例练习 1、思考下面这段代码的打印结果是什么&#xff1f; #include<stdio.h> #include<unistd.h> #include<assert.h> #include<stdlib.h>int main(){int i0;for(;i<2;i){fork();printf("A\n");} exit(0); }所以一共打印6…

open3d教程 (三)点云的显示

官方文档位置&#xff1a; Visualization - Open3D 0.19.0 documentationhttps://www.open3d.org/docs/release/tutorial/visualization/visualization.html核心方法&#xff1a; o3d.visualization.draw_geometries([几何对象列表]) import open3d as o3dprint("Load …

根据模板将 Excel 明细数据生成 Txt 文档|邮件合并

在日常办公中&#xff0c;我们常常会遇到需要批量生成文档的任务。以往&#xff0c;若要将 Excel 中的每一条数据都转化为单独的文档&#xff0c;且文档部分内容依据 Excel 数据动态变化&#xff0c;手动操作不仅繁琐&#xff0c;还容易出错。现在&#xff0c;有一种便捷的方法…

LVGL Dropdown和Calendar详解

LVGL Dropdown和Calendar详解 一、Dropdown详解创建和初始化设置下拉框选项获取选项获取选中项文本&#xff1a;获取选中项索引&#xff1a;设置选中项&#xff1a; 事件处理其他功能和样式设置设置下拉按钮样式&#xff1a;设置下拉框方向&#xff1a;设置最大高度&#xff1a…