资讯专栏INFORMATION COLUMN

stash —— 一个极度实用的Git操作

wind5o / 2060人阅读

摘要:今天要介绍的操作就是,毫不夸张地说,每个用的开发人员都一定要会懂怎么使用。好了,今天要介绍的主角就能实现我们的需求。我们来看下这个功能到底是怎么使用的。前几天我被极客时间的教程刷屏。坦白讲,的确是一项必备技能。

今天要介绍的 Git 操作就是 stash,毫不夸张地说,每个用 Git 的开发人员都一定要会懂怎么使用。

在介绍之前,不知道你有没有和我一样的经历:某一天,我正在一个 feature 分支上高高兴兴地写着(ba)代(a)码(ge)。突然线上环境报错了,是我负责的部分,此时当然是救火要紧哈,准备停下手中的工作准备切 master 分支 checkout 个 hotfix 分支出来。

脑袋正闪出这个想法的时候,咦,发现有点不对劲了 —— 此时我的 feature 分支功能还没做完,comment 上去没意义呀!将修改全部删掉更是不可能,这辈子都是不可能的,那这要怎么办呢?

如果这时能把这个 feature 分支中,还没写好的代码找个地方先藏起来,等到要用的时候再拿出去就完美了。

好了,今天要介绍的主角就能实现我们的需求。我们来看下 stash 这个功能到底是怎么使用的。

假如我现在的代码是这样的:

public static void main(String[] args) {
       System.out.println("我是 feature 分支原有的代码");
       // ...
       System.out.println("我是正在开发的代码");
}

接着上面的情景,我需要把正在开发的代码给藏起来,那么直接使用 git stash 命令即可,使用后就会变成这样的效果:

public static void main(String[] args) {
       System.out.println(我是 feature 分支原有的代码");
       // ...
}

好了,正在 feature 分支还没写完的代码已经被藏起来了,此时,好奇心满满的你想着,它是被藏到哪里去呢?一顿谷歌之后,你发现可以通过这个命令查看 git stash list,如图:

图中的 stash@(0) 就是被藏起来的记录了,知道真相的你这下可以放心地去处理线上问题了。

你很牛皮,线上问题没一会功夫就搞定了,此时你再次切回刚才的 feature 分支,想要把刚才藏起来的代码拿出来。好了,一顿谷歌之后,你发现有两种拿的方法,分别是:

1、git stash pop

2、git stash apply

那这两者有什么不同呢?还记得刚才提交到 git stash list 命令显示的结果吗?—— stash@(0)

git stash pop 的是恢复刚才被藏起来的代码,同时删除 stash@(0) 这条记录也删了,此时你再使用 git stash list 命令就没有结果了:

明白 git stash pop 的作用后,那 git stash apply 命令也很好理解了,它们唯一的不同就是 git stash apply 命令不会删除stash@(0) 这条记录。

最后,如果你在一个分支上使用了 n 次 git stash 命令,那么就会有 stash@(0)、stash@(1)、...、stash@(n),对应一共有 n 条记录。

那我们要这么多条记录有什么用呢?

答案就是我们可以指定 git stash pop/apply 哪条记录。假如我想要恢复 stash@(1) 记录。那么对应的命令是 git stash pop stash@(1) 或 git stash apply stash@(1)

OK,以上就是全部内容了,希望对你有帮助。

PS:前几天我被极客时间的 Git 教程刷屏。坦白讲,Git 的确是一项必备技能。除了极客时间的教程之外,我也非常推荐廖雪峰老师的 Git 教程,链接如下:

https://www.liaoxuefeng.com/w...

PS:本文原创发布于微信公众号「不只Java」,后台回复「电子书」,说不定有你想要的经典书籍呢。公众号专注分享 Java 干货、读书笔记、成长思考。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72696.html

相关文章

  • Git 实用指南

    摘要:个人整理的一些常用的概念和命令集合,方便速查和快速解决某些场景下的问题,覆盖了日常开发和协同工作下的一部分场景,不只是命令行的介绍。常用命令创建一个空白的仓库指的是本地的仓库关联的远程仓库。 个人整理的一些常用的 Git 概念和命令集合,方便速查和快速解决某些场景下的问题,覆盖了日常开发和协同工作下的一部分场景,不只是命令行的介绍。欢迎关注语雀原文,持续更新! 精简入门 1、克隆仓库...

    qpal 评论0 收藏0
  • git 详解及实用指南之三(分支管理)

    摘要:详解及实用指南之一本地操作详解及实用指南之二远程操作创建与合并分支利用分支就可以实现多人开发的伟大模式,从而提高生产效率。分支默认情况下,是一条线,利用指向最新的提交,再用批向就能确定当前分支以及当前分支的提交点。 1. git 详解及实用指南之一 (本地操作) 2. git 详解及实用指南之二 (远程操作) 1.创建与合并分支 利用分支就可以实现多人开发的伟大模式,从而提高生产效率。...

    cgspine 评论0 收藏0
  • git 详解及实用指南之三(分支管理)

    摘要:详解及实用指南之一本地操作详解及实用指南之二远程操作创建与合并分支利用分支就可以实现多人开发的伟大模式,从而提高生产效率。分支默认情况下,是一条线,利用指向最新的提交,再用批向就能确定当前分支以及当前分支的提交点。 1. git 详解及实用指南之一 (本地操作) 2. git 详解及实用指南之二 (远程操作) 1.创建与合并分支 利用分支就可以实现多人开发的伟大模式,从而提高生产效率。...

    darryrzhong 评论0 收藏0
  • 如何使用Git上传项目代码到github

    摘要:是一个基于的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。这就表示已成功连上。大功告成,现在你知道如何将本地的项目提交到上了。文件顾名思义就是告诉需要忽略的文件,这是一个很重要并且很实用的文件。 github是一个基于Git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。这对于一般人来说公共仓库...

    JayChen 评论0 收藏0
  • Git】工作中99%能用到git命令

    摘要:分支操作创建分支创建并切换到新建的分支上切换分支查看分支列表查看所有分支的最后一次操作查看当前分支分支名分支名创建远程分支到本地查看别的分支和当前分支合并过的分支查看未与当前分支合并的分支分支名删除本地分支分支名强行删 showImg(https://segmentfault.com/img/remote/1460000018273797?w=960&h=600); 分支操作 git...

    yanbingyun1990 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<