git stash的正确用法详解
作者:YunfengWang 发布时间:2022-11-06 19:10:07
概述
前段时间突然发现,我之前对git stash
的使用都是错误的。
具体说来,我是这么使用的:在远端有新的提交,需要git pull
来拉取合并时,发现本地有一些未提交的修改,功能也没实现,不适合做一次commit。这时候我执行git stash
隐藏本地的修改,然后执行git pull
来拉取远端的更新,在最新代码基础上重新实现stash的那些代码中的功能。
这里的问题是,重新实现stash代码中的那一步,其实完全可以用git stash pop
来替代,执行这个命令会在最新代码基础上作用stash的代码,不用再重新实现一遍了(不过这时可能会有代码冲突需要解决)。所以我之前是把git stash
当git checkout -- .
来用了,也就是抛弃了本地的代码更新,显然是有问题的。
正确流程基本上是这样:
git stash # 或者 git stash push,效果一样
git pull # 可能有冲突需要手动合并
git stash pop # 可能有冲突需要手动合并
下面记录一下 git stash 提供的功能和一些参数。
git stash 具体用法
git stash
创建一个新的stash,效果与git stash push
一样,效果如下:
$ git stash
Saved working directory and index state WIP on master: c6771a5 doc: fix error during pre-commiting
增加-u
选项可以将未track的文件也隐藏起来。
你可以创建多个stash,最早的stash表示为stash@{0}
,然后是stash@{1}
,依次递加。
git stash list
会列出所有的stash:
$ git stash list
stash@{0}: WIP on master: c6771a5 doc: fix error during pre-commiting
stash@{1}: WIP on master: c6771a5 doc: fix error during pre-commiting
git stash show
可以查看最新stash中的修改,加上编号可以查看之前版本的修改。
$ git stash show stash@{0}
version.txt | 1 +
1 file changed, 1 insertion(+)
git stash apply
可以应用最新的stash到当前的代码中,同样的,如果加上编号则可以应用之前版本的修改到当前代码。apply执行后记得调用git stash drop
来去除以及应用的stash。 git stash pop
效果等于git stash apply
+ git stash drop
。
git stash branch
会基于老的提交代码创建一个分支,同时把最新的修改也作用过去,这样对于新的提交和老提交代码变化很大的场景比较好,避免在新的提交上apply stash时由于冲突太多造成的合并问题。
git stash clean
会清空所有的stash,且没有任何提示,这意味着你所有隐藏的代码都会被删除,执行此命令前请三思!
来源:https://juejin.cn/post/7190224582974898237


猜你喜欢
- 目录1.自定义行索引2. 按普通索引选择数据2.1 按普通索引选择单行数据2.2 按行索引选择多行数据3.按位置索引选择数据3.2 按位置索
- 常规通过迭代或set方法,都无法保证去重后的顺序问题如下,我们可以通过列表的索引功能,对set结果进行序列化old_list=["
- 1 拷贝下面的代码到一个文件,并命名为forkcore.pyimport osimport threadingimport selectim
- PHP mysqli_thread_id() 函数返回当前连接的线程 ID,然后杀死连接:<?php// 假定数据库用户名:root,
- ElementUI是饿了么推出的一套基于vue2.x的一个ui框架。官方文档也很详细,这里做一个element-ui日期插件的补充。官方文档
- MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是高性能、易部
- (下面的代码原来我想用折叠的代码的,但是在google里面老是添加不了折叠的代码,所以就整屏的贴出来了,望大家不要见外。) 朋友的比较好的存
- 本文实例讲述了mysql存储过程原理与用法。分享给大家供大家参考,具体如下:本文内容:什么是存储过程存储过程的创建存储过程的使用查看存储过程
- 信息架构的组件可以拆分成四类组织系统 如何组织信息,例如,依据主题或年代顺序。标签系统 如何表示信息,例如,科学术语(“Acer”)或通俗术
- 本文为大家分享了Python遗传算法解决最大流问题,供大家参考,具体内容如下Generate_matrixdef Generate_matr
- 一、介绍argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.ar
- 这次,我们用Turtle模块结合三角函数,绘制出这样的勾股树:首先,导入模块from turtle import *from math im
- Python 面向对象方法没有重载#在其他语言中,可以定义多个重名的方法,只要保证方法签名唯一即可。方法签名包含3个部分:方法名、参数数量、
- 二进制日志二进制日志中以“事件”的形式记录了数据库中数据的变化情况,对于MySQL数据库的灾难恢复起
- 一、命名元祖在python基础中, 我们学习元祖的时候,取元祖内部的元素都是通过索引来进行取值的。但是这种取值方式不够友好, 所以我们引入命
- 作者: hezhiwu5@163.com <script language="javascr
- 有时候我们需要查看mysql的版本信息,那么就可以参考下面的方法1、使用命令行模式进入mysql会看到最开始的提示符在命令行登录mysql,
- 废话不多说,直接开干!抖音字符视频在今年火过一段时间。反正我是始终忘不了那段刘耕宏老师本草纲目的音乐…这一次自己也来实
- 本文实例讲述了Python反射的用法。分享给大家供大家参考,具体如下:在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或
- 一、BN(Batch Normalization)算法1. 对数据进行归一化处理的重要性神经网络学习过程的本质就是学习数据分布,在训练数据与