想要获取更多文章可以访问我的博客 - 代码无止境

在开发的过程中可能会经常出现下面这种情况,我们正在开发某个功能,当前分支的内容比较乱,不太适合提交,而此时我们需要切换到其他分支上处理一些事情。这个时候该怎么办呢?难道是将修改先备份然后丢弃修改再切换到另外的分支上?答案肯定是否定的,今天我们就来介绍如何使用git stash命令来完美解决这种窘境。

准备

首先我们需要准备一个git仓库,并准备两个分支(masterdev):


  1. mkdir git-test
  2. cd git-test
  3. git init
  4. touch README.md
  5. git add README.md
  6. git commit -m "第一次提交"
  7. git checkout -b dev

使用stash命令

在上一步,我们已经切换到dev了,现在我们在README.md上随便修改一点东西来模拟凌乱的分支:


  1. $ git status
  2. On branch dev
  3. Changes not staged for commit:
  4. (use "git add <file>..." to update what will be committed)
  5. (use "git checkout -- <file>..." to discard changes in working directory)
  6. modified: README.md
  7. no changes added to commit (use "git add" and/or "git commit -a")

现在假如我们急需切换到master分支上处理一些事情,所以我们需要使用git stash来藏储dev分支上的修改。


  1. git stash

然后我们再执行一下git status来看下dev上的情况:


  1. $ git status
  2. On branch dev
  3. nothing to commit, working tree clean

我们会发现dev分支变干干净净了,因为刚刚的修改已经被藏储了。那么或许你会问,我们应该怎么查看有哪些藏储呢?当我们在master分支上处理完事情后回到dev分支又该如何恢复我们藏储的内容呢?首先我们执行git stash list我们查看所有的藏储记录:


  1. $ git stash list
  2. stash@{0}: WIP on dev: 9ad7304 第一次提交

如何恢复呢?可以使用git stash pop恢复第一条存储记录,也可以使用git stash apply stash@{n}命令来恢复指定的存储记录。


  1. $ git stash apply stash@{0}
  2. On branch dev
  3. Changes not staged for commit:
  4. (use "git add <file>..." to update what will be committed)
  5. (use "git checkout -- <file>..." to discard changes in working directory)
  6. modified: README.md

然后我们就会发现刚刚的修改恢复回来了。但是此时我们再次执行git stash list会发现刚刚恢复的藏储记录还存在,我们需要执行git stash drop stash@{n}删掉它。


  1. $ git stash drop stash@{0}
  2. Dropped stash@{0} (8c0b9fa5bc217c7876ab825147ee76712364887e)

再执行git stash list的时候就会发现这条藏储被删除了,当然如果我们恢复的是栈顶的藏储记录的话我建议直接使用git stash pop命令,因为在恢复的同时会自动删除掉栈顶的藏储记录。

Git使用小技巧之Stash命令藏储零乱分支的更多相关文章

  1. 8 个 Git 的小技巧

    git 已经成为了我日常必备工具之一,我总结我几乎每天使用的8个有用(且简洁)的git技巧.   使用-p选择性添加 当你想提交内容时,你可以通过使用 git commit -am 来选择所有文件或使 ...

  2. [转]CMD命令提示符窗口中的快捷键、小技巧和常用命令

    转至:https://wenku.baidu.com/view/d5d2b7ca360cba1aa811dac6.html 快捷键:  F1:按F1一次,命令提示符向后切换到已经执行过的命令字符.如果 ...

  3. Git使用小技巧之多个远程仓库

    想要获取更多文章可以访问我的博客 - 代码无止境. 这是一个普通的工作日,小代正在勤勤恳恳的写代码.这时陈BOSS走到小代身边,跟小代说:"我们的代码需要同时推送到Github和码云两个仓库 ...

  4. Git使用小技巧之免密登录

    想要获取更多文章可以访问我的博客 - 代码无止境. 小代同学在使用Git的过程中发现,每次向远程仓库推送代码的时候都需要输入账号密码.做为一个程序员,多多少少都会有偷懒的思维.那么如何才能避免每次都要 ...

  5. Matlab使用新发现1(小技巧:shell 命令、工程工作目录设置相关)

    最近在调试一个基于Matlab的程序,在偶然间发现了几个比较有趣的技巧,给大家分享一下(很可能是太菜鸟了,没有涉及这方面,大方之家请勿见笑,对您有所帮助请点赞!) 1. Matlab语言是一种解释型语 ...

  6. Git使用小技巧之回滚和撤销

    想要获取更多文章可以访问我的博客 - 代码无止境. 日常的开发,我们难免会创建错误的git提交记录,整个时候git给我们提供了两个命令来解决这个问题.一个命令是git reset,另一个是git re ...

  7. Git使用小技巧之挑拣合并

    先想想一个情况,现在我们有一个功能急需要发布到线上,但是这个功能相关的代码所在的测试分(test)支有很多不应该发布的代码,那么这个时候我们就需要将与这个代码相关的提交选择性的合并到master上并发 ...

  8. 小技巧:使用命令行打开vscode 以及 sublime 工具

    vscode手动打开vscode command + shift + p 打开命令面板(或者点击菜单栏 查看>命令面板)输入 shell 选择 install code command in P ...

  9. Android Studio|IntelliJ IDEA Git使用小技巧

    一 分支管理 1. 新建分支 在master的基础上创建新分支dev 2. 推送分支 将新建的分支dev推送到远程 3. 切换分支 4. 合并分支 当我们在dev分支完成代码修改并测试通过后 需要将d ...

随机推荐

  1. sql 1=1

    大多数时候是为了sql拼写方便而加的条件从执行任务来看,不影响性能  

  2. Telnet协议详解(远程登陆协议)

    1. 概述 Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议.Telnet协议的目的是提供一个相对通用的,双向的,面向八位字节的通信方法,允许界面终端设备和面向终 ...

  3. openFrameworks 是一个旨在助力你进行开创性工作的开源 C++ 工具箱(是很多其它类库的组合)

    openFrameworks 是一个旨在助力你进行开创性工作的开源 C++ 工具箱,提供了简单且直观的实验框架.该工具箱具有常见的工具,并集合了众多常见的库: OpenGL, GLEW, GLUT,  ...

  4. FileHelper

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Win ...

  5. ELINK编程器支持芯片详细列表

    支持MCU芯片包括:STM32  F0.F1.F2.F3.F4.L0.L1全系列: GD32 F10XX系列. 各系列芯片支持详情如下:

  6. WPF开发之限制输入的控件---------转自CDSN

    原文地址 http://blog.csdn.net/ghosind/article/details/51627601 作者 ghosind 一,正则表达式过滤字符串 if (RegexString = ...

  7. Wow6432Node

    64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项.许多 32 位注册表项与其相应的 64 位注册表项同名,反之亦然. 64 位版本 Windows 包含的默认 64 ...

  8. Fabric-Crashlytics-Android 注意点

    Fabric-Crashlytics-Android 注意点 非发布版本关闭Fabirc 官方文档中有这方面的介绍,有助于在开发过程中,提高编译速度和避免上报不必要的Crash 链接 一共两步 第一步 ...

  9. BGP的一网双平面规划

    网络拓扑: XRV1 ===================================================================== # sysname XRV1# boa ...

  10. TCanvas 类属性及方法

    delphi TCanvas类 类关系   TObject-> TPersistent   对那些作图对象,可使用TCanvas对象作为画布.标准的window控件,例如编辑控件和列表框控件,当 ...