0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

第一本Git命令教程(7.1)-清理之缓存

454398 来源:alpha007 作者:alpha007 2022-12-05 17:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天是 Git 系列课程第七课,上一课我们学会了查看 Git 本地历史提交,今天痞子衡要讲的是 Git 仓库的清理操作,一共 4 个命令,都是日常开发中非常实用的命令,掌握这 4 个命令,会让你有一种玩弄 Git 仓库于股掌的感觉。

由于本节课是教程的核心课程,所以会分 4 小节课来讲,第一讲介绍 git stash

1. 缓存文件改动 git stash

试想一下你在使用 Git 时有没有这样的经历,你正在写代码(修改文件),但是代码还没有写完善,没达到提交的标准,但是你知道了有另一个 team member 推送了一个提交,这个提交你需要立刻同步到你的本地,此时怎么办?是的,你需要本地缓存你的改动。

1.1 缓存当前改动 git stash [save -a "description"]

// 在 test.c 文件里增加一个 test_stash0()函数 jay@pc MINGW64 /d/my_project/gittest (master)$ git diff app/test.c

diff --git a/app/test.c b/app/test.c
index 70dde01..38b763c 100644
--- a/app/test.c
+++ b/app/test.c
@@ -1,5 +1,8 @@
 #include 
 #include 
+void test_stash0(void)
+{
+}
 void test(void)
 {
     printf("this is test/n");

// 将增加 test_stash0()函数的改动缓存起来 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash save -a "add test_stash0()"

Saved working directory and index state On master: add test_stash0()

// 缓存之后查看 Git 空间很干净,说明缓存成功 jay@pc MINGW64 /d/my_project/gittest (master)$ git status

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

// 在 test.c 文件里再依次 test_stash1()、test_stash2()函数,并依次缓存 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash save -a "add test_stash1()"

Saved working directory and index state On master: add test_stash1()

jay@pc MINGW64 /d/my_project/gittest (master)$ git stash save -a "add test_stash2()"

Saved working directory and index state On master: add test_stash2()

1.2 查看所有已缓存改动列表 git stash list

// 查看缓存 list,此时显示共有三次缓存 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash list

stash@{0}: On master: add test_stash2()
stash@{1}: On master: add test_stash1()
stash@{2}: On master: add test_stash0()

1.3 查看某个已缓存改动的具体细节 git stash show -p [stash@{n}]

// 查看编号为 stash@{1} 的缓存的具体改动 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash show -p stash@{1}

diff --git a/app/test.c b/app/test.c
index 70dde01..4380571 100644
--- a/app/test.c
+++ b/app/test.c
@@ -1,5 +1,8 @@
 #include 
 #include 
+void test_stash1(void)
+{
+}
 void test(void)
 {
     printf("this is test/n");

1.4 恢复某个已缓存改动 git stash pop [stash@{n}]

现在我们需要从缓存区恢复某个已缓存改动,可以直接用 git stash pop 恢复最近的一次缓存,也可以用 git stash pop stash@{n} 恢复任意指定的一次缓存(也可以用 git stash pop apply stash@{n} 来恢复某个缓存,但是 apply 命令并不会将被恢复的缓存改动从缓存区 list 里删除)

// 将编号为 stash@{1} 的缓存恢复 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash pop stash@{1}

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   app/test.c

no changes added to commit (use "git add" and/or "git commit -a")
Dropped stash@{1} (62daecdc826586bb3c0cbe93c5f8d2e2697e9ea)

// 查看原编号为 stash@{1} 的缓存的具体改动,确实已正常恢复 jay@pc MINGW64 /d/my_project/gittest (master)$ git diff app/test.c

diff --git a/app/test.c b/app/test.c
index 70dde01..38b763c 100644
--- a/app/test.c
+++ b/app/test.c
@@ -1,5 +1,8 @@
 #include 
 #include 
+void test_stash0(void)
+{
+}
 void test(void)
 {
     printf("this is test/n");

// 查看缓存 list 里被恢复的缓存"add test_stash1()"(原编号 stash@{1} 已被释放)已不在 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash list

stash@{0}: On master: add test_stash2()
stash@{1}: On master: add test_stash0()

1.5 丢弃某个已缓存改动 git stash drop [stash@{n}]

// 从缓存 list 里直接删除编号为 stash@{1} 的缓存 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash drop stash@{1}

Dropped stash@{1} (2f5dd9a45f77bcb24cac247b8f88bdec157798f2)

// 查看缓存 list 里被删除的缓存"add test_stash0()"(原编号 stash@{1} 已被释放)已不在 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash list

stash@{0}: On master: add test_stash2()

1.6 清空所有已缓存改动 git stash clear

// 清空缓存 list jay@pc MINGW64 /d/my_project/gittest (master)$ git stash clear

// 查看缓存 list,其已被清空 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash list


审核编辑黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Git
    Git
    +关注

    关注

    0

    文章

    207

    浏览量

    17053
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    京东缓存中间件架构与缓存内核优化

    、京东缓存中间件架构 1、背景 在当今高并发、分布式的系统架构中,缓存已成为提升应用性能、降低数据库负载的核心组件。随着业务规模的扩大与系统复杂度的增加,缓存的使用和管理面临诸多挑战
    的头像 发表于 04-03 16:18 1819次阅读
    京东<b class='flag-5'>缓存</b>中间件架构与<b class='flag-5'>缓存</b>内核优化

    深入剖析AD9544:高性能时钟同步与抖动清理芯片的卓越

    深入剖析AD9544:高性能时钟同步与抖动清理芯片的卓越选 在电子设计领域,时钟同步和抖动清理是至关重要的环节,直接影响着系统的性能和稳定性。AD9544作为款功能强大的时钟管理芯
    的头像 发表于 03-23 09:30 143次阅读

    达实AIoT智能物联网管控平台V7.1更新升级

    2026年3月17日,达实智能31周年庆典暨“AI+物联网平台”应用成果汇报会成功举办。达实智能研发中心产品经理袁宜峰博士发布了AIoT智能物联网平台V7.1
    的头像 发表于 03-19 11:10 560次阅读

    KeepAlive:组件缓存实现深度解析

    我们学习了 Suspense 如何处理异步组件加载。今天,我们将探索Vue3中另个强大的特性:KeepAlive。它允许我们在组件切换时缓存组件实例,避免重复渲染,极大地提升了用户体验和性能
    发表于 03-05 19:17

    深度解析LMK04616:超低噪声时钟抖动清理器的卓越

    深度解析LMK04616:超低噪声时钟抖动清理器的卓越选 引言 在当今的电子系统设计中,时钟信号的稳定性和低抖动特性对于确保系统的高性能运行至关重要。LMK04616作为款超低噪声和低功耗
    的头像 发表于 02-08 11:45 532次阅读

    海光整机搭配银河麒麟桌面操作系统V10SP1(X86)「使用命令挂载磁盘报错结构需要清理」问题解决方法

    整机型号:集特IPC-660 搭载GM0-5602 海光3350主板 搭配银河麒麟桌面操作系统V10SP1(X86) 问题:使用命令挂载磁盘报错结构需要清理 问题描述 在银河麒麟桌面操作系统
    的头像 发表于 01-06 17:53 1642次阅读
    海光整机搭配银河麒麟桌面操作系统V10SP1(X86)「使用<b class='flag-5'>命令</b>挂载磁盘报错结构需要<b class='flag-5'>清理</b>」问题解决方法

    ESP32 编译过程中 bootloader 配置阶段的 CMake 缓存冲突错误,记录

    CMake 识别的源码路径与缓存中记录的不致。 错误原因分析 这个错误提示非常明确: CMake 当前尝试使用 D:/v5.5.1/frameworks/esp-idf-v5.5.1 路径
    发表于 12-23 07:07

    缓存美:万文详解 Caffeine 实现原理(上)

    文章将采用“总-分-总”的结构对配置固定大小元素驱逐策略的 Caffeine 缓存进行介绍,首先会讲解它的实现原理,在大家对它有个概念之后再深入具体源码的细节之中,理解它的设计理念,从中能学习到
    的头像 发表于 08-05 14:49 807次阅读
    <b class='flag-5'>缓存</b><b class='flag-5'>之</b>美:万文详解 Caffeine 实现原理(上)

    harmony-utilsCacheUtil,缓存工具类

    harmony-utilsCacheUtil,缓存工具类
    的头像 发表于 07-04 16:36 602次阅读

    harmony-utilsLRUCacheUtil,LRUCache缓存工具类

    harmony-utilsLRUCacheUtil,LRUCache缓存工具类 harmony-utils 简介与说明 harmony-utils 款功能丰富且极易上手的HarmonyOS工具库
    的头像 发表于 07-03 18:11 644次阅读

    高性能缓存设计:如何解决缓存伪共享问题

    在多核高并发场景下, 缓存伪共享(False Sharing) 是导致性能骤降的“隐形杀手”。当不同线程频繁修改同缓存行(Cache Line)中的独立变量时,CPU缓存
    的头像 发表于 07-01 15:01 888次阅读
    高性能<b class='flag-5'>缓存</b>设计:如何解决<b class='flag-5'>缓存</b>伪共享问题

    STM32一本

    纯分享贴,有需要可以直接下载附件获取完整资料! (如果内容有帮助可以关注、点赞、评论支持下哦~)
    发表于 05-16 13:42

    MCU缓存设计

    MCU 设计通过优化指令与数据的访问效率,显著提升系统性能并降低功耗,其核心架构与实现策略如下: 缓存类型与结构 指令缓存(I-Cache)与数据缓存(D-Cache)‌ I-Ca
    的头像 发表于 05-07 15:29 1293次阅读

    Nginx缓存配置详解

    Nginx 是个功能强大的 Web 服务器和反向代理服务器,它可以用于实现静态内容的缓存缓存可以分为客户端缓存和服务端缓存
    的头像 发表于 05-07 14:03 1384次阅读
    Nginx<b class='flag-5'>缓存</b>配置详解

    在KiCad的PCB编辑其中,有个实用的工具,可以用来清理布线与过孔

    在KiCad的PCB编辑其中,有个实用的工具,可以用来清理布线与过孔。不仅可以移除没有使用的布线与过孔,还可以清理冗余的重叠导线。
    发表于 05-06 21:57