当前位置: 首页 > news >正文

【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.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.dtcms.com/a/104796.html

相关文章:

  • idea报错:程序包不存在
  • 【android bluetooth 协议分析 13】【RFCOMM详解 1】【通俗易懂 什么是rfcomm】
  • 数理天地杂志数理天地杂志社数理天地编辑部2025年第6期目录
  • Java的比较器 Comparable 和 Comparator
  • 如何批量拆分Excel工作表或按行拆分Excel表格 - Excel拆分器使用方法
  • 通信协议与网络知识:从硬件到互联网的全面指南
  • 什么是 MCP(模型上下文协议)
  • 10乱码问题的解释(1)
  • GLPI 在企业 IT 资产全生命周期管理中的价值
  • thinkcmf搭建
  • Thinkpad t14的startup 没有 UEFI/Legacy Boot 选项,如何设为U盘启动
  • 【Easylive】MySQL中LEFT JOIN与INNER JOIN的使用场景对比
  • c# 虚函数、接口、抽象区别和应用场景
  • C语言复习--assert断言
  • 一起学习大语言模型-常用命令及模型介绍
  • 输电线路航空标志球:低空飞行的安全路标 / 恒峰智慧科技
  • WiFi(无线局域网)技术的多种工作模式
  • Nest.js学习路径
  • Linux SDHCI 驱动解析:硬件原理与核心机制全解
  • 实现一个分布式锁需要考虑哪些问题
  • Windows 平台下AnythingLLM本地开发环境运行踩坑记录
  • Git相关笔记1 - 本地文件上传远程仓库
  • rdp,ssh,云主机,虚拟主机,宝塔,远程桌面是什么
  • 2025 年浙江特种设备考试攻略:细节决定成败​
  • Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战(167)
  • 【注解和interface的那点事】
  • 选择省市区
  • 图基RAG方法全景分析 | 高级检索增强生成技术Graph-based RAG
  • deepseek v3-0324实现浏览器插件:图片抓取与下载工具
  • 【MathType】MathType安装和嵌入word