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

    文章

    201

    浏览量

    15786
收藏 人收藏

    评论

    相关推荐

    HTTP缓存头的使用 本地缓存与远程缓存的区别

    HTTP缓存头是组HTTP响应头,它们控制浏览器和中间代理服务器如何缓存网页内容。合理使用HTTP缓存头可以显著提高网站的加载速度和性能,减少服务器的负载。 1. HTTP
    的头像 发表于 12-18 09:41 134次阅读

    ROSCon China 2024 | RDK第一本教材来了!地瓜机器人与古月居发布新书《ROS 2智能机器人开发实践》

    12月7日-8日,为期两天的ROSCon China 2024在上海圆满落幕,来自全球的ROS专家学者、开发者、企业代表齐聚堂,共享机器人前沿技术成果。地瓜机器人携手众多RDK生态产品亮相,并联手古月居共同推出首基于RDK机器人开发者套件的教材——《ROS 2智能机器
    的头像 发表于 12-10 18:48 452次阅读
    ROSCon China 2024 | RDK<b class='flag-5'>第一本</b>教材来了!地瓜机器人与古月居发布新书《ROS 2智能机器人开发实践》

    ROSCon China 2024 | RDK第一本教材来了!地瓜机器人与古月居发布新书《ROS 2智能机器人开发实践》

    12月7日-8日,为期两天的ROSCon China 2024在上海圆满落幕,来自全球的ROS专家学者、开发者、企业代表齐聚堂,共享机器人前沿技术成果。地瓜机器人携手众多RDK生态产品亮相,并联
    发表于 12-10 10:56 206次阅读

    缓存美——如何选择合适的本地缓存

    Guava cache是Google开发的Guava工具包中套完善的JVM本地缓存框架,底层实现的数据结构类似于ConcurrentHashMap,但是进行了更多的能力拓展,包括缓存过期时间设置、
    的头像 发表于 11-17 14:24 357次阅读
    <b class='flag-5'>缓存</b><b class='flag-5'>之</b>美——如何选择合适的本地<b class='flag-5'>缓存</b>?

    ubuntu下的vscode插件安装idf时,总是找不到git,为什么?

    总是提示:Git is not found in current environment 但是我已经在setting.json下设置了\"git.path\": \"/bin/git\" 同行,
    发表于 06-21 07:16

    关于Docker 的清理命令集锦

    这篇文章主要介绍了Docker 清理命令集锦,需要的朋友可以参考下 复制代码代码如下: docker kill $(docker ps -a -q)  删除所有已经停止的容器 复制代码代码如下
    的头像 发表于 06-13 15:56 395次阅读

    通过git命令获取ESP8266_RTOS_SDK失败如何解决?

    本人使用的硬件平台为esp8266,开发环境为ubuntu22.04。在通过git命令获取ESP8266_RTOS_SDK失败,通过上网搜索尝试了很多方法无效。具体情况如下
    发表于 06-07 07:26

    飞凌ElfBoard ELF 1板卡-ubuntu18.04 git安装及基本使用

    的名字\"git config --global user.email \"你的邮箱地址\" 4.把所有文件添加到缓存git add . 5.提交缓存区的所有修改到仓库
    发表于 03-21 16:23

    全志D1s裸机开发体验第一个程序

    体验第一个程序 2.1 编译烧录运行 2.1.1编译 先进入源码目录,打开 Git Bash,如下图操作: 然后在 Git Bash 中执行 make 命令,可以生成
    发表于 03-08 11:43

    如何清理完arcgis残留文件

    清理完ArcGIS残留文件是个相对复杂的过程,需要逐个清理相关的文件和注册表项。下面介绍如何清理完ArcGIS残留文件。 步骤:准备工作
    的头像 发表于 02-25 13:59 4763次阅读

    《Linux常用命令自学手册》工具书永远是常备的秘籍

    。《Linux常用命令自学手册》就是其中的一本工具书,它以清晰、简洁的方式,将复杂的命令行知识呈现给读者,为Linux新手和老手都提供了宝贵的参考。 这本书最引人注目的特点之是其结
    发表于 01-29 19:42

    蓝牙 | 软件:Git管理高通的ChipCode项目

    最近发现大家在高通chipcode网站上下载不了代码,小编直使用git的方式获取新版本代码,没有遇到什么阻碍。于是小编到新主机上尝试下载代码的压缩包和git代码,都遇到了问题。由于压缩包是高通自己
    的头像 发表于 01-26 08:29 417次阅读
    蓝牙 | 软件:<b class='flag-5'>Git</b>管理高通的ChipCode项目

    【RISC-V开放架构设计之道|阅读体验】一本别出心裁的RISC-V架构之书(第一章)

    【RISC-V开放架构设计之道|阅读体验】一本别出心裁的RISC-V架构之书(第一章) 申请这本书的时候就看到了书评中有几点吸引我,让我希望拜读下: 本书的作者是RISC-V架构的作者、著名
    发表于 01-24 19:06

    【RISC-V开放架构设计之道|阅读体验】学习处理器体系架构的一本好书

    并不是一本简单罗列指令的书籍,而是一本全面介绍指令设计理念的书籍。书籍的内容充分反映了最新的计算机指令设计的理念,这是我推荐该书的最主要理由。 为提升该书的趣味性,作者在页边加入约 50 段花絮,用于
    发表于 01-23 20:08

    如何选择合适的本地缓存

    小编最近在使用系统的时候,发现尽管应用已经使用了 redis 缓存提高查询效率,但是仍然有进步优化的空间,于是想到了比分布式缓存性能更好的本地缓存,因此对领域内常用的本地
    的头像 发表于 01-18 11:19 868次阅读
    如何选择合适的本地<b class='flag-5'>缓存</b>?