git 查看pop内容_原创 | 有了Git这个操作,我再也不怕代码混乱了!
点击上方蓝字,关注并星标,和我一起学技术。
大家好,今天的文章我们来介绍git当中一个非常常用的功能——储藏。
大家在协同开发的时候应该都有这样的经历,有的时候我们的功能开发了一半,因为某些原因我们想要checkout到其他的分支上查看代码或者是执行某个工作。但是如果我们直接执行checkout,git会禁止我们的行为。
我拿本地的项目举个例子,可以看到当我们执行了checkout命令之后,git提示我们在一些文件的改动会被覆盖,所以拒绝了我们的checkout命令。
![](/assets/blank.gif)
这个时候应该怎么办呢?最好的办法当然是使用git commit把改动提交了。但问题是有的时候我们不想提交一些代码,比如还没有经过严谨的测试,或者是我们临时开发的一些测试功能等等。在这种情况下commit也是不合适的,即使提交了了,之后在push之前也会要把commit撤销了。但如果一不小心忘记了,可能就会造成悲剧。
针对这个问题,git提供了一个解决策略就是stash功能。
储藏改动
git stash可以将本地还没有提交的改动全部存储起来。接着,我们在之前的某一篇文章当中加上一行-test stash。
我们执行一下git diff,可以看到这行改动。
![](/assets/blank.gif)
接着我们执行git stash,会发现我们的git目录又回到了没有改动的状态。再执行git diff也看不到任何改动了。
![](/assets/blank.gif)
这是因为git把我们本地还没有提交的改动都暂存了起来,这样方便我们进行checkout或者是其他一些操作,而不会起冲突或者是其他的影响。
应用改动
那么当我们操作完成之后,想要还原刚才暂存起来的内容,这个时候应该怎么办呢?
也有办法,我们只需要使用git stash apply或者是git stash pop这两个命令就可以将刚才暂存起来的内容还原了。但是这里有一个问题,就是stash apply和pop之间是不同的。
这里涉及到stash内部的实现机制,stash内部其实是通过堆栈实现的。pop对于堆栈而言很明确,就是弹出的意思。也就是说如果我们使用的是pop,那么当我们pop之后,这条记录会在堆栈当中删除。而如果使用的是apply呢,记录不会从堆栈当中删除,仍然会保留下来。
一般情况下我使用pop多一些,但是pop也有缺点,比如pop没有办法选择应用的记录。我们可以使用git stash list来查看一下当前堆栈当中已经有的记录。
![](/assets/blank.gif)
如果我们使用git stash pop的话,默认的是应用的栈顶的记录,也就是stash@{0}。但如果我们使用stash apply的话,我们可以自由选择我们想要应用的记录。比如如果我们想要应用最后一条记录的话,我们可以这样:
git stash apply stash@{2}
关于应用储存的修改也有一些细节,首先是储藏和修改对应的分支可以不同。我们可以在一个分支储藏,之后切换到另外一个分支进行应用。并且如果我们在应用之前修改了同样的内容的话,也会引起合并冲突。
另外就是当我们应用储藏的时候,会发现我们之前add过的文件又重新回到了未暂存的状态。如果我们想要重新回到文件被暂存的状态时,我们可以使用index选项来执行。
git stash apply --index
对于我们已经不想要的储藏记录,我们可以执行git stash drop来进行删除。
其他技巧
除了上述的功能之外,git stash还有一些其他的用法。
比如--keep-index选项,在不加这个选项的时候,当我们使用git stash,它会把所有没有commit的内容全部stash。但是有的时候我们不希望这样,我们希望它只暂存我们没有add到暂存区的内容。这个时候我们就可以通过这个参数实现。
另外一个参数是-u或者是--include-untracked,我们从这个名字上也看得出来。它们的意思是在stash的时候将新创建并且还没有被git管理的文件也一并储藏起来。
除此之外,还有--patch的功能也很常用。patch我们曾经在上篇文章讲解交互式命令的时候讲到过,它可以将git针对的改动缩小到代码而不是文件级别。交互式地和我们操作哪些代码层面的改动需要存储起来,操作方法和上篇文章介绍的一样。大家如果有所遗忘可以在文末找到上一篇的文章进行回顾。
![](/assets/blank.gif)
最后一个功能是从储藏上新建一个分支,有的时候我们先储存了代码之后又继续进行了一些工作。这个时候如果我们再恢复从前的改动则会引起冲突。这个时候我们可以运行git stash branch新建一个新的分支,在这个分支上应用我们的提交。
git stash branch applystash
应用成功之后Git会自动抛弃掉对应的stash记录,非常方便,不过我个人没有用过,因为实际工作当中没有遇到这么复杂的情况。
今天的文章就到这里,衷心祝愿大家每天都有所收获。如果还喜欢今天的内容的话,请来一个三连支持吧~(点赞、在看、转发)
- END -
git 查看pop内容_原创 | 有了Git这个操作,我再也不怕代码混乱了!相关推荐
- git stash pop冲突_这有一份 git 日常使用清单,你需要吗?
点击上方"前端教程",选择"星标" 每天前端开发干货第一时间送达! 作者:echozh juejin.im/post/5d5b4c6951882569eb570 ...
- git 查看文件内容
$ cat file_name.format 上面的命令可直接在 git 命令框中输入 用于查看 文件内容 可以是 已经add文件/未add文件 也 可以是 提交/未提交 的文件 用法 : $ cat ...
- git git 查看远程库_如何从Git远程存储库中提取
git git 查看远程库 Note: This the fourth video in the Git for beginners series. Watch the first video her ...
- git 强制更新远程_版本控制管理工具git的常见指令合集
今天小千就来给大家介绍一下git中比较常见的指令合集,方便大家使用git,建议收藏起来方便日后查阅. 一.常见的命令 git help <command> # 显示command的help ...
- git 修改分支名字_大牛总结的 Git 使用技巧,写得太好了!
作者:你喜欢吃青椒么来源:juejin.im/post/5d157bf3f265da1bcc1954e6 前言 本文是参考廖雪峰老师的Git资料再加上我自己对Git的理解,记录我的Git学习历程,作下 ...
- git add后取消_满满干货!——Git知识总结
git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 下面就详细的介绍一下git: 本地库 通过命令 git init 把这个目录变成git可以管理的仓库 git ...
- git add 文件夹_软件测试学习资源—Git 基础使用
环境准备: 操作系统: Win7 旗舰版 64位 Git:自官网下载2.22 Windows版本,默认安装 任意位置新建一个空白文件夹:d:/B03_Git 在该文件夹中点击鼠标右键,选择" ...
- git 查看分支编码_12个常用的Git命令,赶紧记一波!
今天齐姐简单讲下 Git 的实现原理,知其所以然才能知其然:并且梳理了日常最常用的 12 个命令,分为三大类分享给你. 本文的结构如下: 作者和开发原由 Git 的数据模型 常用命令 资源推荐 作者和 ...
- git ssh拉取代码_阿里云搭建git服务器
一.搭建步骤,分为两步 搭建中心仓库 自动同步代码到站点目录 二.详细步骤如下 1.先检查一下服务器上有没有安装git git --version 如果出现版本号,说明服务器已经安装git,如图所示: ...
最新文章
- CentOS7.4下 VNC Server的搭建和客户端的连接配置
- linux 命令 kps,10个LINUX命令 超好用
- 手动配置mysql_手动配置Mysql,无需安装的方法以及Mysql的一些基本命令
- servlet中显示mysql字段_Java Servlet:从数据库获取信息并在屏幕上显示它
- 万字图解Java多线程,不信你学不会!
- GuaiGuai ---- 1
- 显卡硬解4k测试软件,对飙4K硬解 看谁才是笑到最后的大佬
- 计算机制图大赛,制图大赛简介
- plc中int数据类型范围_AB的PLC中,这些数据类型:INT、DINT、SINT、REAL和BOOL,分别代表什么意思?...
- Oracle OMF参数
- 人工智能全栈学习路线之人工智能概览(百度云智学院学习笔记)
- 免费使用腾讯云每天定时签到京东领取京豆
- raid卡缓存对硬盘性能_1000倍可靠性,专为高端NAS而生 西部数据SA500 RED SSD固态硬盘首发评测...
- SSH Tunnel隧道详解
- MATLAB【数字图像处理】 实验五:形态学图像处理
- maven settings.xml文件
- 凡泰极客「开放银行」主题私享会圆满落地
- 关键词卡首屏接口、关键词卡首屏原理讲解、关键词卡首屏提高权重
- 中水处理设备:工业中水回用设备技术应用
- 寒武纪加速平台(MLU200系列) 摸鱼指南(二)--- 模型移植-环境搭建