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

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.git456def..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.mzph.cn/web/74219.shtml

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

相关文章

【计算机视觉】YOLO语义分割

一、语义分割简介 1. 定义 语义分割&#xff08;Semantic Segmentation&#xff09;是计算机视觉中的一项任务&#xff0c;其目标是对图像中的每一个像素赋予一个类别标签。与目标检测只给出目标的边界框不同&#xff0c;语义分割能够在像素级别上区分不同类别&#xff0c;从…

MATLAB之数据分析图系列:从二维到三维(直接套用)

MATLAB以其强大的矩阵运算和可视化功能&#xff0c;成为科研、工程领域的标配工具。本文提供从基础二维图形到复杂三维模型的即用代码块&#xff0c;涵盖数据标注、多图排版、动态演示等核心技巧 所有代码均经过MATLAB 2023a实测&#xff0c;替换数据即可生成专业级图表。” …

HTTP响应数据包全面解析:结构、原理与最佳实践

目录 HTTP响应概述 HTTP响应数据包结构 2.1 状态行 2.2 响应头 2.3 空行 2.4 响应体 HTTP状态码详解 3.1 1xx信息响应 3.2 2xx成功响应 3.3 3xx重定向 3.4 4xx客户端错误 3.5 5xx服务器错误 常见HTTP响应头字段 响应体内容类型 缓存控制机制 实际HTTP响应示例分…

H.264编码解析与C++实现详解

一、H.264编码核心概念 1.1 分层编码结构 H.264采用分层设计&#xff0c;包含视频编码层&#xff08;VCL&#xff09;和网络抽象层&#xff08;NAL&#xff09;。VCL处理核心编码任务&#xff0c;NAL负责封装网络传输数据。 1.2 NALU单元结构 // NAL单元头部结构示例 struc…

快速入手-基于Django-rest-framework的自身组件权限认证(九)

1、在对应的视图函数里增加认证&#xff08;局部起作用&#xff0c;不全局生效&#xff09; 导入类&#xff1a; from rest_framework.authentication import ( BasicAuthentication, SessionAuthentication, ) from rest_framework.permissions import IsAuthentica…

受控组件和非受控组件的区别

在 React 中&#xff0c;​受控组件&#xff08;Controlled Components&#xff09;​ 和 ​非受控组件&#xff08;Uncontrolled Components&#xff09;​ 是处理表单元素的两种不同方式&#xff0c;它们的核心区别在于 ​数据管理的方式 和 ​与 React 的交互模式。 受控组件…

迈向云原生:理想汽车 OLAP 引擎变革之路

在如今数据驱动的时代&#xff0c;高效的分析引擎对企业至关重要。理想汽车作为智能电动汽车的领军企业&#xff0c;面临着海量数据分析的挑战。本文将展开介绍理想汽车 OLAP 引擎从存算一体向云原生架构演进的变革历程&#xff0c;以及在此过程中面临的挑战&#xff0c;以及是…

ZLMediaKit 源码分析——[3] ZLToolKit 中EventPoller之网络事件处理

系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一&#xff1a;获取音频和视频设备 第五篇 WebRTC学习二&#xff1a;WebRTC音视频数据采集 第六篇 WebRTC学习三…

【分布式】分布式限流方案解析

文章目录 固定窗口限流方案​实现方式​优点​缺点​ 滑动窗口限流方案​实现方式​优点​缺点​ 令牌桶限流方案​实现方式​优点​缺点​ 漏斗限流方案​实现方式​优点​缺点​ 在分布式系统蓬勃发展的当下&#xff0c;系统面临的流量挑战日益复杂。为确保系统在高并发场景下…

WPS JS宏编程教程(从基础到进阶)-- 第三部分:JS宏编程语言开发基础

第三部分:JS宏编程语言开发基础 @[TOC](第三部分:JS宏编程语言开发基础)**第三部分:JS宏编程语言开发基础**1. 变量与数据类型**变量声明:三种方式****示例代码****数据类型判断****实战:动态处理单元格类型**2. 运算符全解析**算术运算符****易错点:字符串拼接 vs 数值相…

Python - 爬虫-网页抓取数据-库urllib

urllib库是Python内置的HTTP请求库。无需额外安装&#xff0c;可以直接使用。urllib库包含以下四个模块。 urllib.request - 打开和读取 URL。urllib.error - 包含 urllib.request 抛出的异常。urllib.parse - 解析 URL。urllib.robotparser - 解析 robots.txt 文件。 1、reque…

C++进阶知识复习 1~15

C 进阶总复习 &#xff08;1~15&#xff09; 目的1. 介绍下程序从编写到可执行的整个过程2. C中的auto和decltype的区别3. 介绍下多态的实现原理4. C中的new[] 和delete[] 为什么一定要配对使用&#xff1f;5. C中malloc申请的内存 可以使用delete释放嘛6. 什么情况下会出现内存…

输电线路航空标志球:低空飞行的安全路标 / 恒峰智慧科技

在现代社会&#xff0c;随着航空业的快速发展&#xff0c;低空飞行活动日益频繁。为了确保飞行安全&#xff0c;避免飞机与高压电线等障碍物发生碰撞&#xff0c;输电线路航空标志球应运而生。这种装置被广泛应用于高压输电线路上&#xff0c;尤其是超高压和跨江输电线&#xf…

Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件详解

Debian/Ubuntu的networking的/etc/network/interfaces配置文件详解 Debian/Ubuntu 的 /etc/network/interfaces 配置文件详解 在 Debian/Ubuntu 系统中&#xff0c;/etc/network/interfaces 是传统网络接口配置文件&#xff0c;用于定义网络接口的静态/动态配置。以下是逐项解…

OpenCV 图形API(或称G-API)(1)

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 引言 OpenCV 图形API&#xff08;或称G-API&#xff09;是一个新的OpenCV模块&#xff0c;旨在使常规图像处理更快且更便携。通过引入一种新的基于图的执行…

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal

Leetcode 3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解题思路2. 代码实现 题目链接&#xff1a;3505. Minimum Operations to Make Elements Within K Subarrays Equal 1. 解题思路 这一题大的思路上不难想到就是一个动态规划的思路。我们分别…

win10之mysql server 8.0.41安装

一 mysql server 下载 官网下载地址页面 https://dev.mysql.com/downloads/mysql/二 免装版使用步骤 1 解压 下载完成后,解压文件夹,如下所示: 2 执行安装命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…

第十二届蓝桥杯省赛软件类(cc++组)

第一题&#xff08;空间&#xff09; 解题思路 答案 #include <stdio.h>int main() {// 计算256MB对应的字节数&#xff0c;1MB 1024KB&#xff0c;1KB 1024Blong long total_bytes 256 * 1024 * 1024; // 每个32位二进制整数占4个字节&#xff08;32 / 8 4&#xf…

C++ 新特性 | C++ 11 | 移动语义

文章目录 一、移动语义1、为什么需要移动语义&#xff1f;2、怎么“偷”&#xff1f;——右值引用&#xff08;&&&#xff09;3、如何实现移动语义&#xff1f;——移动构造函数/赋值4、什么时候触发移动&#xff1f;5、移动 vs 拷贝 一、移动语义 1、为什么需要移动语…

wsl下ubuntu安装宝塔

在 WSL (Windows Subsystem for Linux) 下的 Ubuntu 中安装宝塔面板的步骤如下&#xff1a; 1. 确保 WSL 环境正常 已安装 WSL 2 并启用 Ubuntu 发行版&#xff08;推荐 Ubuntu 20.04/22.04&#xff09;。 在 PowerShell 中检查 WSL 版本&#xff1a; wsl --list --verbose 如…