[Git] 020 stash —— Git 中的”皮姆粒子“
0. 我准备模拟两种情况
第一种
第二种
情况简析
- 仓库中的最新版本发现 Bug,需要立即修复
- 当前在 "dev" 分支中工作到一定程度,尚不能提交,但删之可惜
ps: 在分支中没有提交就切其他分支,改动部分会被覆盖
- 下面是 "Git" 的温馨提示
error: Your local changes to the following files would be overwritten by checkout:
...
Please commit your changes or stash them before you switch branches.
Aborting `
1. 解决方案
1.1 题外话
- 单片机中有个“中断函数”,意为停止事件 A,优先处理事件 B,处理完后再回来继续 A 的工作
- 电影《蚁人 2》中,皮姆博士暴露了行踪,而他身处的大楼里有他的心血。最后,他的“皮姆粒子”没有让他失望!他将整座大楼缩小成一个行李箱,实力证明”跑得了和尚,也跑得了庙“!
- 金刚琢、乾坤一气袋之类的说下去就没底了
1.2 "stash" —— "Git" 中的”皮姆粒子“
- 当前的工作就好像皮姆博士的那栋大楼
- "stash" 就好像“皮姆粒子”
- "stash" 可以把“大楼”化作“行李箱”,放到一边;等找到“合适的地皮”后,再把“行李箱”恢复成“大楼”
2. 第一种情况的制造与解决
2.1 目前的情况
2.2 没有条件,创造条件
2.1.1 开一条分支
- 切到该分支
- 新建一个文档 "note_02.txt"
- 往 "note_02.txt" 中写入文本,并保存
2.2.2 查看当前状态
2.3 有了条件,解决问题
2.3.1 使用“皮姆粒子”
- 命令:
git stash
- 因为 "note_02.txt" 并没有添加至暂存区,所以有个反馈
2.3.2 切换分支
- 切到 "master" 分支
- 另开一条分支 "stash_1",并切入
- 此时的情况
2.3.3 修复 Bug
- 打开 "note_01.txt",将 "5. master round 3.1" 中的 "round" 改为 "version",并保存
2.3.4 添加 & 提交
2.3.5 切换 & 合并
- 切到 "master" 分支
- 合并 "stash_01" 分支
- 这里没有用 "--no-ff",情形二再用
2.3.6 删除分支
2.3.7 再次使用“皮姆粒子”
- "statsh" 有个参数 "list",用来查看“行李箱”
- 上图的 "list" 像极了 "reflog"
- 上图的 "stash@{0}" 像极了 "HEAD@{n}"
- 可以多次使用
git stash
- 恢复时,可以选择指定的“行李箱”,语法:
git stash apply stash@{n}
- 可以多次使用
- 恢复
- 恢复有两种方法
- 方法一:
git stash apply
+git stash drop
- 方法二:
git stash pop
- 方法一:
2.4 解决问题后,观察一下“日志”
- 没有增加提交次数
- 哈希值也没有变
3. 第二种情况的制造与解决
3.1 准备活动
3.1.1 在 "dev" 分支将文件添加至暂存区
- 因为 "2.2.1" 的第 3 步,"note_02.txt" 是在 "Git Bash" 用 "vim" 写入数据的,所以有个格式提醒
- 我给 "note_02.txt" 转了格式后,用
git status
查看了一下
3.1.2 在 "dev" 分支将文件提交给本地仓库
3.1.3 切到 "master" 分支并合并
3.1.4 查看“日志”
- "2.4" 中没有看到的那次 "commit" 与其哈希值在这里显现了
3.2 开始创造条件
3.2.1 目前的情况
3.2.2 切换分支
- 切到 "dev" 分支
- 修改 "note_01.txt"
- 将 "note_01.txt" 添加至暂存区
- 注意,这里的 "note_01.txt" 的状态是在暂存区
3.2.3 “无中生有”
- 假设 "3.2.1" 的图中,"master" 分支的 "commit (n+2)" 被 YorkFish 找出一个 Bug,需要立即修复
3.3 开始修复 Bug
3.3.1 使用“皮姆粒子”
- 与情形一相似,我就不多费口舌了
- 这次使用 "--no-ff" 与 "pop"
3.3.2 一个注意点
- 我在 "3.2.2" 将 "note_01.txt" 加入暂存区了,但现在的显示表明暂存区没有收入
- 挖坑:探索暂存区“消失”的文档
- 坑号编码:Git20-1
[Git] 020 stash —— Git 中的”皮姆粒子“的更多相关文章
- git stash pop 冲突,git stash list 中的记录不会自动删除的解决方法
在使用git stash代码时,经常会碰到有冲突的情况,一旦出现冲突的话,系统会认为你的stash没有结束. 导致的结果是git stash list 中的列表依然存在,实际上代码已经pop出来了. ...
- 关于Git的stash命令
add 添加新文件到 Git 代码仓库的索引中 $ git add filename mv 移动或重命名文件 $ git mv old-filename new-filename rm 从工作目录和 ...
- git submodule 使用过程中遇到的问题
git submodule 使用过程中遇到的问题 资源文件 原.gitmodules文件的内容如下: [submodule "Submodules/FFmpegWrapper"] ...
- git在实际开发中的应用
PS: git操作实例(https://learngitbranching.js.org/?demo) 一, 创建分支,合并分支到master 1. 在远程仓库中创建master和test分支 2.本 ...
- 第23月第24天 git命令 .git-credentials git rm --cached git stash clear
在git push的时候,有时候我们会想办法撤销git commit的内容 1.找到之前提交的git commit的id git log 找到想要撤销的id 2.git reset –hard id ...
- git 彻底删除历史记录中的大文件
Reference 大家一定遇到过在使用Git时,不小心将一个很大的文件添加到库中,即使删除,记录中还是保存了这个文件.以后不管是拷贝,还是push/pull都比较麻烦. === 删除大文件方法 方法 ...
- git pull和git merge区别&&Git冲突:commit your changes or stash them before you can merge. 解决办法
http://blog.csdn.net/sidely/article/details/40143441 原文: http://www.tech126.com/git-fetch-pull/ Git中 ...
- git从远程仓库中更新代码到本地仓库
git从远程仓库中更新代码到本地仓库 有时候在使用git pull的时候,会莫名才报错.查了很多资料,尝试过git的很多命令.包括git fetch命令,都会报同样的错.最后终于发现了一条捷径,由网友 ...
- git branch stash
一.branch(分支) 1.创建分支 git branch dev 2.切换分支 git branch dev 3.合并分支 git merge bug 4.查看分支 git branch 5.删除 ...
随机推荐
- java作业利用递归解决问题
第一题 利用递归求组合数 设计思想 (1)首先根据公式求,利用递归完成阶乘函数的初始化,并且通过调用阶乘,实现公式计算 (2)递推方法,根据杨辉三角的特点,设置二维数组,从上到下依次保存杨辉三角所得数 ...
- vuex中this.$store.dispatch和this.$store.commit的区别(都是调用vuex中的方法。一个异步一个同步)
dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值) commit:同步操作,写法:this.$store.commit( ...
- 设置HTML的TextArea标记跟随文本内容自动设置高度
写内容的时候用的是textarea来写,可以换行,然后预览页面也要显示是换行才行,所以预览页面还是要用textarea来显示, 样式去掉边框,不可以拉伸,不可编辑 // html <textar ...
- Python 函数Ⅲ
默认参数 调用函数时,默认参数的值如果没有传入,则被认为是默认值.下例会打印默认的age,如果age没有被传入: 以上实例输出结果: 不定长参数 你可能需要一个函数能处理比当初声明时更多的参数.这些参 ...
- git的用法的总结
git的基本用法(一) 1).git的初始化 --配置用户名和邮箱 不然后面无法提交 git config --global user.name "myname"; git con ...
- nmon监控使用
1.上传nmon_linux_x86_64文件到服务器 2.修改文件权限chmod 775 nmon_linux_x86_64 3.压测时需要执行以下命令监控服务器./nmon_linux_x86_6 ...
- 代码检测docker-sonarqube
gitlab-ce + gitlab-runner + sonarqube,在提交代码时对代码质量进行检测,对不符合要求的代码不允许提交到gitlab version: '3.1' services: ...
- 牛客网 TaoTao要吃鸡 ( 0/1背包变形 )
题意 : 题目链接 分析 : 如果没有 BUG (即 h == 0 的时候)就是一个普通的 0 / 1 背包 需要讨论一下 h != 0 的情况 此时有就相当于有物品是有特权的 而且背包装有特权的物 ...
- sublime Text3中文字体错位问题解决办法
问题如下: 问题成因: 配置中的默认字体为Consolas,这种字体对中文支持效果不是很好 解决办法: 1.下载 Yahei Consolas Hybrid 字体 2.将下载的Yahei Consol ...
- es之主分片和复制分片的交互过程
1:索引(创建或者删除)一个文档 首先:发送一个索引或者删除的请求给node1 其次:node1接收到请求之后,会根据请求中携带的参数“文档id”判断出该文档应该存储在具体哪一个shard中 shar ...