博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
痞子衡嵌入式:第一本Git命令教程(7.1)- 清理之缓存(stash)
阅读量:5970 次
发布时间:2019-06-19

本文共 4008 字,大约阅读时间需要 13 分钟。


  今天是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.cindex 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 masterYour 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.cindex 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 masterYour 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.cno 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.cindex 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

转载于:https://www.cnblogs.com/henjay724/p/8861484.html

你可能感兴趣的文章
测试第三方代码
查看>>
RabbitMQ接触(二)
查看>>
Springboot-添加对jsp支持
查看>>
数据库设计中的14个技巧
查看>>
替换k个字符后最长重复子串
查看>>
讲解sed用法入门帖子
查看>>
Java异常学习心得
查看>>
Scala学习之类和属性篇(一):定义类的主构造方法
查看>>
使用阿里云CentOS安装LAMP时,安装PHP扩展需要注意的事情
查看>>
Python 浮点数运算
查看>>
iOS官方Sample大全
查看>>
MongoDB replSet
查看>>
PHP sprintf() 函数
查看>>
Linux 内核已支持苹果
查看>>
屏幕分辨率的问题
查看>>
web.xml中filter,servlet和listener区别
查看>>
c# 使用Autodesk design Review API
查看>>
Linux用户权限acl配置
查看>>
NSString 去掉前后空格或回车符
查看>>
ant扩展应用的安装
查看>>