Git使用小技巧之Stash命令藏储零乱分支
想要获取更多文章可以访问我的博客 - 代码无止境。
在开发的过程中可能会经常出现下面这种情况,我们正在开发某个功能,当前分支的内容比较乱,不太适合提交,而此时我们需要切换到其他分支上处理一些事情。这个时候该怎么办呢?难道是将修改先备份然后丢弃修改再切换到另外的分支上?答案肯定是否定的,今天我们就来介绍如何使用git stash命令来完美解决这种窘境。
准备
首先我们需要准备一个git仓库,并准备两个分支(master和dev):
mkdir git-test
cd git-test
git init
touch README.md
git add README.md
git commit -m "第一次提交"
git checkout -b dev
使用stash命令
在上一步,我们已经切换到dev了,现在我们在README.md上随便修改一点东西来模拟凌乱的分支:
$ git status
On branch dev
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:  README.md
no changes added to commit (use "git add" and/or "git commit -a")
现在假如我们急需切换到master分支上处理一些事情,所以我们需要使用git stash来藏储dev分支上的修改。
git stash
然后我们再执行一下git status来看下dev上的情况:
$ git status
On branch dev
nothing to commit, working tree clean
我们会发现dev分支变干干净净了,因为刚刚的修改已经被藏储了。那么或许你会问,我们应该怎么查看有哪些藏储呢?当我们在master分支上处理完事情后回到dev分支又该如何恢复我们藏储的内容呢?首先我们执行git stash list我们查看所有的藏储记录:
$ git stash list
stash@{0}: WIP on dev: 9ad7304 第一次提交
如何恢复呢?可以使用git stash pop恢复第一条存储记录,也可以使用git stash apply stash@{n}命令来恢复指定的存储记录。
$ git stash apply stash@{0}
On branch dev
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:  README.md
然后我们就会发现刚刚的修改恢复回来了。但是此时我们再次执行git stash list会发现刚刚恢复的藏储记录还存在,我们需要执行git stash drop stash@{n}删掉它。
$ git stash drop stash@{0}
Dropped stash@{0} (8c0b9fa5bc217c7876ab825147ee76712364887e)
再执行git stash list的时候就会发现这条藏储被删除了,当然如果我们恢复的是栈顶的藏储记录的话我建议直接使用git stash pop命令,因为在恢复的同时会自动删除掉栈顶的藏储记录。
Git使用小技巧之Stash命令藏储零乱分支的更多相关文章
- 8 个 Git 的小技巧
		
git 已经成为了我日常必备工具之一,我总结我几乎每天使用的8个有用(且简洁)的git技巧. 使用-p选择性添加 当你想提交内容时,你可以通过使用 git commit -am 来选择所有文件或使 ...
 - [转]CMD命令提示符窗口中的快捷键、小技巧和常用命令
		
转至:https://wenku.baidu.com/view/d5d2b7ca360cba1aa811dac6.html 快捷键: F1:按F1一次,命令提示符向后切换到已经执行过的命令字符.如果 ...
 - Git使用小技巧之多个远程仓库
		
想要获取更多文章可以访问我的博客 - 代码无止境. 这是一个普通的工作日,小代正在勤勤恳恳的写代码.这时陈BOSS走到小代身边,跟小代说:"我们的代码需要同时推送到Github和码云两个仓库 ...
 - Git使用小技巧之免密登录
		
想要获取更多文章可以访问我的博客 - 代码无止境. 小代同学在使用Git的过程中发现,每次向远程仓库推送代码的时候都需要输入账号密码.做为一个程序员,多多少少都会有偷懒的思维.那么如何才能避免每次都要 ...
 - Matlab使用新发现1(小技巧:shell 命令、工程工作目录设置相关)
		
最近在调试一个基于Matlab的程序,在偶然间发现了几个比较有趣的技巧,给大家分享一下(很可能是太菜鸟了,没有涉及这方面,大方之家请勿见笑,对您有所帮助请点赞!) 1. Matlab语言是一种解释型语 ...
 - Git使用小技巧之回滚和撤销
		
想要获取更多文章可以访问我的博客 - 代码无止境. 日常的开发,我们难免会创建错误的git提交记录,整个时候git给我们提供了两个命令来解决这个问题.一个命令是git reset,另一个是git re ...
 - Git使用小技巧之挑拣合并
		
先想想一个情况,现在我们有一个功能急需要发布到线上,但是这个功能相关的代码所在的测试分(test)支有很多不应该发布的代码,那么这个时候我们就需要将与这个代码相关的提交选择性的合并到master上并发 ...
 - 小技巧:使用命令行打开vscode 以及 sublime 工具
		
vscode手动打开vscode command + shift + p 打开命令面板(或者点击菜单栏 查看>命令面板)输入 shell 选择 install code command in P ...
 - Android Studio|IntelliJ IDEA Git使用小技巧
		
一 分支管理 1. 新建分支 在master的基础上创建新分支dev 2. 推送分支 将新建的分支dev推送到远程 3. 切换分支 4. 合并分支 当我们在dev分支完成代码修改并测试通过后 需要将d ...
 
随机推荐
- WCF 大文件传输配置
			
<bindings> <webHttpBinding> <!--这个是接收大数据加的,设置WCF服务器端数据接收上限参数,此处单位字节,故2147483647字节==2G ...
 - 2-18-搭建mysql集群实现高可用
			
1 环境清理以及安装 1.1 mysql旧版本清除 准备5台虚拟机,分配如下 mysql管理结点:xuegod1.cn IP:192.168.10.31 (安装server.clien ...
 - symfony 数据库表生成实体、迁移数据库
			
从数据库表生成实体 1. 由数据库生成模型: php bin/console doctrine:mapping:convert --from-database yml D:\db\ D:\test_b ...
 - .NET 图片像素比较
			
/// <summary> /// 图像比较.用于找出两副图片之间的差异位置 /// </summary> public class ImageComparer { /// & ...
 - Java 访问修饰符详解
			
访问修饰符定义了类.属性和方法的访问权限,Java 中包含四种,访问权限从小到大为 private.default.protected 和 public. public,公共修饰符,被其修饰的类.属性 ...
 - QTcpServer与QTcpSocket通讯
			
TCP TCP是一个基于流的协议.对于应用程序,数据表现为一个长长的流,而不是一个大大的平面文件.基于TCP的高层协议通常是基于行的或者基于块的. ●.基于行的协议把数 ...
 - 危险的DDD聚合根
			
原文:危险的DDD聚合根 DDD的核心是聚合.这没有问题,大家都认同.但关于DDD中的聚合方式,其实我还是有些担心,下面说说我的想法,希望大家参与讨论.其实当初第一次看到DDD中关于聚合根部分论述的时 ...
 - UWP SQLite的使用
			
原文:UWP SQLite的使用 1.准备工作 1.首先我们要给项目添加"SQLite for Universal Windows Platform"扩展 点击菜单栏的" ...
 - 不同格式图片相互转换的开源库分享(使用CxImage,并有VC6的配置过程)
			
不同格式图片相互转换的开源库分享 一.背景 笔者在项目的开发中,需要调用windows下的COM接口SetIconLocation来实现桌面快捷方式.而我们项目中给定的图片格式为png格式,SetIc ...
 - 避免用户重复点击按钮(使用Enable:=False,消息繁忙时会有堵塞的问题,只能改用Sleep)
			
// 现象描述:// 用户点击按钮后程序开始繁忙工作,这时候用户不知道是否成功,就继续点几次// 采用Enalbe = false ... = true的方式发现还会触发点击,分析原因如下 ...