git stash(储藏)的用法总结

作者:小旭2021 时间:2023-01-29 08:46:13 

当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,我觉得git stash是一个更加便捷的选择。 

git stash(git储藏)可用于以下情形:

  • 发现有一个类是多余的,想删掉它又担心以后需要查看它的代码,想保存它但又不想增加一个脏的提交。这时就可以考虑git stash。

  • 使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用git stash就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修Bug,等到修完Bug,提交到服务器上后,再使用git stash apply将以前一半的工作应用回来。

  • 经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。储藏(stash)可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

 步骤如下:

  • 添加改动到stash。在原分支 git stash save -a "messeag",网上很多很多资料都没有加 -a 这个option选项,我想他们的代码开发可能都是在原代码上进行修改吧。而对于在项目里加入了代码新文件的开发来说,-a选项才会将新加入的代码文件同时放入暂存区。

  • 恢复改动。如果你要恢复的是最近的一次改动,git stash pop 即可,我用这个用的最多。如果有多次stash操作,那就通过git stash list查看stash列表,从中选择你想要pop的stash,运行命令git stash pop stash@{id}或者 git stash apply stash@{id}即可。这方面网上的资料挺多的。

  • 删除stashgit stash drop <stash@{id}> 如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash。git stash clear 是清除所有stash,整个世界一下子清净了!

  • git stash pop 与 git stash apply <stash@{id}> 的区别。

    当我使用git stash pop 和 git stash apply 几次以后,我发现stash list 好像比我预计的多了几个stash。于是我便上网去了解了一下这两个命令的区别。原来git stash pop stash@{id}命令会在执行后将对应的stash id 从stash list里删除,而 git stash apply stash@{id} 命令则会继续保存stash id。对于有点强迫症的我来说,是容不下越来越多的陈旧stash id 仍然存在的,所以我更习惯于用git stash pop 命令。

 git stash 使用实例 :

生成测试环境

// 初始化仓库,进行一次提交
# git init stash-test
# cd stash-test && echo 'hello'> readme
# git add . && git commit -m "init"

// 修改工作区和暂存区
# echo 'need to be stashed' >> readme
# git add readme

// 查看此时工作区和版本库区别
# git diff HEAD
diff --git a/readme b/readme
index ce01362..55d6c28 100644
--- a/readme
+++ b/readme
@@ -1 +1,2 @@
hello
+need to be stashed

执行stash及恢复

// 暂存当前状态
# git stash

// 查看当前工作区和版本库区别
# git diff HEAD
==> 此时什么都没有输出,说明工作区被重置为HEAD指向内容了

// 显示已暂存列表
# git stash list
stash@{0}: WIP on master: 440e976 init

// 恢复暂存区和工作区进度
# git stash pop --index stash@{0}

// 查看工作区和版本库区别
# git diff HEAD
diff --git a/readme b/readme
index ce01362..55d6c28 100644
--- a/readme
+++ b/readme
@@ -1 +1,2 @@
hello

命令详解:

git stash  对当前的暂存区和工作区状态进行保存。
git stash list  列出所有保存的进度列表。
git stash pop [--index] [<stash>] 恢复工作进度

来源:https://www.cnblogs.com/chenyablog/p/7902700.html

标签:git,stash,储藏
0
投稿

猜你喜欢

  • 手把手教你使用Python解决简单的zip文件解压密码

    2021-01-20 10:08:41
  • Django debug为True时,css加载失败的解决方案

    2022-05-07 01:17:53
  • CentOS 7中安装mysql server的步骤分享

    2024-01-20 13:33:56
  • python加载自定义词典实例

    2021-07-15 14:53:55
  • 登陆成功后自动计算秒数执行跳转

    2023-10-10 19:47:59
  • Filestream使用简单步骤总结

    2024-01-24 08:08:26
  • Python中使用socks5设置全局代理的方法示例

    2021-05-24 01:51:17
  • Entity Framework使用Code First模式管理数据库

    2024-01-28 04:40:43
  • PHP远程调试之XDEBUG

    2024-05-02 17:13:18
  • JavaScript实现DOM对象选择器

    2024-05-05 09:15:35
  • TensorFlow查看输入节点和输出节点名称方式

    2022-11-27 04:50:11
  • python导入坐标点的具体操作

    2023-02-24 19:59:46
  • 置信椭圆原理以及椭圆图形绘制方式

    2021-04-24 04:25:04
  • 浅谈pytorch中stack和cat的及to_tensor的坑

    2022-12-14 11:53:23
  • python中的三种注释方法

    2023-05-27 07:47:01
  • python pandas 对series和dataframe的重置索引reindex方法

    2023-08-25 08:10:57
  • python文件及目录操作代码汇总

    2022-08-19 14:07:27
  • Python深度优先算法生成迷宫

    2023-05-13 08:38:09
  • 深入解析el-col-group强大且灵活的Element表格列组件

    2024-04-27 15:46:49
  • 激发你的灵感:50个优秀的Favicons设计

    2007-10-21 19:52:00
  • asp之家 网络编程 m.aspxhome.com