返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >git stash(储藏)的用法总结
  • 656
分享到

git stash(储藏)的用法总结

2024-04-02 19:04:59 656人浏览 八月长安
摘要

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

当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了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>] 恢复工作进度

到此这篇关于git stash(储藏)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: git stash(储藏)的用法总结

本文链接: https://lsjlt.com/news/152221.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • git stash(储藏)的用法总结
    当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,我觉得git stash是一个更加便捷的选择。  ...
    99+
    2024-04-02
  • git stash 命令的应用
    这篇文章主要介绍“git stash 命令的应用”,在日常操作中,相信很多人在git stash 命令的应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”git stash 命令的应用”的疑惑有所帮助!接下来...
    99+
    2023-06-15
  • 一文总结Git基本用法
    Git 是当今最流行的版本控制系统之一,它可帮助开发者管理和协调代码的版本。随着团队项目增多,Git 的使用也变得越来越流行。本文将介绍 Git 的基本使用。Git 安装安装 Git 是使用 Git 的前提。安装方法因你所用的操作系统而异。...
    99+
    2023-10-22
  • 如何正确的使用git stash 和unstash
    这篇文章将为大家详细讲解有关如何正确的使用git stash 和unstash,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。VCS-->git -->stash这个时候针对需求1...
    99+
    2023-06-06
  • Git常用命令总结
    这篇文章主要讲解了“Git常用命令总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Git常用命令总结”吧!前言  这里就不介绍 git 了,表一看到命令行就怕怕,常用的命令也就这些,基本满...
    99+
    2023-06-09
  • 总结Git删除远程commit的方法
    Git是一个开源的分布式版本控制系统,为开发者提供了一些重要的命令和工具,在软件开发和合作过程中极为方便。其中,Git交流的关键在于提交(commit)的概念,因为在提交的过程中,可以让团队了解到代码的修改情况以及个人贡献。然而,有时候我们...
    99+
    2023-10-22
  • 【总结】一些常用的Git命令
    Git是一个非常流行的版本控制系统,它的使用在软件开发中已经成为行业标准,笔者在这里将会为大家介绍一些常用的Git命令。一、创建一个新的仓库使用以下命令可以创建一个新的Git仓库:git init这个命令会在当前目录下创建一个新的.git目...
    99+
    2023-10-22
  • Vue3中的pinia使用方法总结(建议收藏版)
    目录1.pinia介绍2.pinia基本使用2.1注意Store获取到后不能解构,否则失去响应式3.修改state的数据4.getters的使用5. actions的使用6.数据的持...
    99+
    2023-05-17
    vue3 pinia使用 vue3 pinia
  • 总结Git增加文件的四种方法
    Git 是目前最流行的版本控制工具之一,它能帮助程序员们更好地管理代码。在日常开发中,我们经常需要添加新的文件到 Git 当中,下面我将介绍几种方法来实现这一过程。一、使用 Git add 命令这是最常用的一种方法,它会将文件添加到 Git...
    99+
    2023-10-22
  • Linux常用命令总结(建议收藏)
    文章目录 一、文件管理1、cat:查看文件内容案例1:输出内容+行数 2、chmod:是控制用户对文件的权限的命令案例1::将user文件修改成用户、组、其他用户都可以读写可执行的权限 3、diff:用于比较文件的差...
    99+
    2023-08-25
    linux 服务器 unix
  • 总结设置git全局参数名字的方法
    Git是一种非常流行的分布式版本控制系统,它可以帮助开发者有效地管理代码。在使用Git时,你需要配置一些参数,其中一个非常重要的是全局参数名字。这个参数可以让Git知道你的身份,这样在提交代码时就可以正确地记录提交者的信息。接下来,我将为大...
    99+
    2023-10-22
  • git pull失败的原因和解决方法【总结】
    在使用 Git 进行协作开发时,经常会使用 git pull 命令将远程仓库的代码更新至本地。但是,有时候在执行 git pull 命令时会出现失败的情况,可能会遇到以下几种常见的情况:远程代码库没有权限git pull 命令会从远程仓库拉...
    99+
    2023-10-22
  • Oracle存储过程、包、方法使用总结(推荐)
    Oracle存储过程、包、方法使用总结,具体代码如示: CREATE OR REPLACE PROCEDURE MYPROCEDURE(P_ID IN VARCHAR, ...
    99+
    2024-04-02
  • python函数存储在模块的优点及用法总结
    1、通过将函数存储在独立的文件中,可隐藏程序代码的细节,将重点放在程序的高层逻辑上。 2、能让你在众多不同的程序中重用函数。 将函数存储在独立文件中后,可与其他程序员共享这些文件而不...
    99+
    2024-04-02
  • return用法总结
    推荐教程:java教程return用法总结:  一、在有返回值的方法中,返回方法指定类型的值,同时结束方法执行;  二、也可以用在返回值为void的方法中,用来终止方法运行;break和return  break是用来跳出循环的,例如for...
    99+
    2021-12-06
    java教程 java return
  • pandas用法总结
    https://blog.csdn.net/yiyele/article/details/80605909   一、生成数据表1、首先导入pandas库,一般都会用到numpy库,所以我们先导入备用:import numpy as...
    99+
    2020-11-19
    pandas用法总结
  • python用法总结
    requests库的用法: requests是python实现的简单易用的HTTP库 因为是第三方库,所以使用前需要cmd安装 pip ×××tall requests 安装完成后import一下,正常则说明可以开始使用了 基本用法: im...
    99+
    2023-01-31
    python
  • GridView DataFormatString 的用法总结
    GridView的DataFormatString属性用于设置绑定到该列的数据的格式化方式。它可以接受一系列的占位符来表示不同的数据...
    99+
    2023-09-20
    GridView
  • 【python】import的用法总结
    import用法总结 一、直接引入二、from 模块/包 import 模块/函数1.直接引入模块2.引入模块中的所有函数3.引入模块中的指定函数4.相对引用在B_2.py 中引用A.py 中...
    99+
    2023-09-02
    python 深度学习
  • vue3的hooks用法总结
    目录vue3的hooks总结 一、计数器的hookvue3中hooks的介绍及用法小结一、 什么是hooks二、hooks的用法vue3的hooks总结  vue...
    99+
    2023-05-16
    vue3 hooks用法 vue3 hooks介绍
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作