当前位置: 首页 > news >正文

用git stash暂存修改

git stash命令用于保存当前工作目录的临时状态,包括暂存区和已修改但未暂存的文件。它会将这些修改保存在一个临时区域(即“堆栈”)中,让你能够回到一个干净的工作目录,可以进行其他操作。等到你完成其他任务后,可以再回到之前的状态,继续之前的开发。

使用场景

切换分支: 当你正在开发一个功能或修复一个bug,但需要切换到另一个分支来处理其他任务时,使用git stash可以将当前的修改保存起来。这样你可以切换到其他分支并开始另一个任务,而无需提交或放弃你当前的修改。

合并代码: 在进行代码合并操作之前,你可能需要切换到目标分支并更新代码。使用git stash可以保存当前分支的修改,然后切换到目标分支并执行更新操作。完成后,你可以切换回原分支,并使用git stash pop来恢复之前的修改。

临时修复问题: 如果你遇到一个紧急的问题,需要快速切换到其他分支进行修复,但又不想丢失当前的修改,可以使用git stash将修改保存起来。然后你可以切换到修复分支,并在修复完成后再回到原分支恢复之前的修改。

多任务处理: 在开发过程中,你可能会同时处理多个任务或功能。当你想切换到另一个任务时,可以使用git stash将当前任务的修改保存起来,然后切换到另一个任务并开始工作。完成后,你可以回到之前的任务并使用git stash pop来恢复修改。

代码审查: 在进行代码审查时,你可能需要将修改保存起来,以便在审查过程中进行对比和讨论。使用git stash可以暂时保存你的修改,并切换到源代码分支进行对比和审查。

以下是git stash命令的用法和一些常见的选项:

  1. git stash save "message" 这将保存当前的工作目录状态到一个新的stash,并添加一条可选的消息来描述这个stash的内容。

  2. git stash list 查看当前保存的所有stash列表,每个stash都有一个唯一的标识符和对应的描述信息。

  3. git stash show [stash] 查看某个特定stash的变更内容。默认情况下,会显示最新的stash。

  4. git stash apply [stash] 将某个stash的变更应用到当前工作目录。这个stash不会从stash列表中移除。如果不指定stash,默认会应用最新的stash。

  5. git stash pop [stash] 与git stash apply类似,但在应用完stash后会将该stash从stash列表中删除。

  6. git stash drop [stash] 删除某个stash,从stash列表中移除。如果不指定stash,默认会删除最新的stash。

  7. git stash clear 删除所有的stash,慎用,它会清除所有保存的stash记录。

  8. git stash branch <branch_name> [stash] 创建一个新分支并将某个stash中的变更应用到新分支上。这样可以在一个干净的环境中继续开发。

  9. git stash -p 交互式地选择要保存的修改,即对每个修改进行确认。

  10. git stash -ugit stash --include-untracked 保存除了未跟踪的文件(Untracked files)外的所有修改。

  11. git stash --keep-indexgit stash --no-keep-index 默认情况下,git stash会保存所有已暂存的修改,使用--keep-index选项可以只保存未暂存的修改。

  12. git stash --all 保存所有的修改,包括暂存区和未暂存的修改,以及未跟踪的文件。

示例用法

  1. 保存当前的修改到stash,并添加描述信息:

git stash save "Work in progress on feature XYZ"
  1. 查看当前所有的stash列表:

git stash list
  1. 应用某个特定的stash:

git stash apply stash@{2}
  1. 创建一个新分支并将某个stash应用到新分支上:

git stash branch new-feature-branch stash@{1}
  1. 交互式地选择要保存的修改:

git stash -p

请记住,git stash是一种临时保存修改的方法,并不应该被滥用。它主要适用于短期的临时任务和临时保存修改的情况。

注意在应用某个特定的 stash 恢复修改内容时,最好确保你当前的工作目录是干净的(没有未提交的修改),这样可以避免一些潜在的冲突和问题。另外,git stash是一个非常有用的命令,但不应该滥用它。如果可能,最好尽量完成当前的修改并提交它们,而不是经常性地使用stash来处理分支切换。

补充:

  1. 多次使用git stash save: 如果在进行了一些修改后,再次使用git stash save保存工作目录的状态,它将创建一个新的stash,并将当前的修改堆叠在之前的stash之上。后续使用git stash apply或git stash pop时,可以选择应用特定的stash。

  2. 解决冲突: 在应用stash的时候,如果与当前分支的其他修改发生冲突,需要解决这些冲突。解决冲突后,使用git add命令来标记冲突已解决,然后使用git stash drop命令删除stash。

  3. git stash和git clean的区别: git stash只保存已修改但未暂存的文件和已暂存的文件,不保存未跟踪的文件(Untracked files)。如果你需要清除所有未跟踪的文件,可以使用git clean命令。

  4. 恢复单个文件: 如果只想恢复某个特定的文件而不是整个stash,可以使用git restore命令。例如:

git restore --source=stash@{1} -- <file_path> 这会将stash@{1}中的指定文件还原到当前工作目录。

  1. 临时储存当前工作目录: git stash并不是唯一的方法来临时储存当前工作目录的修改。你也可以使用git commit来提交当前的修改,然后再切换到其他分支或进行其他操作。当你需要回到之前的状态时,使用git stash或git reset等命令来撤销这个临时提交。

  2. 删除多个stash: 如果你想删除多个stash,可以使用git stash drop命令多次来删除它们,或者使用git stash clear命令一次性删除所有stash。

  3. 使用git stash的场景: git stash在临时保存工作目录状态方面非常有用,特别是在需要频繁切换分支或处理紧急任务时。它可以保护当前的修改,并帮助你保持工作目录的整洁。

总结:git stash是Git中一个强大而实用的命令,可以在开发过程中帮助你临时保存和恢复修改,从而更高效地处理分支切换和其他任务。但仍然建议在可能的情况下,尽量将修改提交到版本控制中,以保持代码的完整性和可追溯性。

“git stash只保存已修改但未暂存的文件和已暂存的文件,不保存未跟踪的文件(Untracked files)。” 请问这句话中 未跟踪的文件是什么? 它与未暂存的文件、已暂存的文件有什么不同

在Git中,有三种类型的文件状态:

  1. 已暂存的文件(Staged Files): 已暂存的文件是指在你运行git add命令后,将修改的文件添加到暂存区(Stage/Index)的文件。这些文件的修改已经被Git记录,并准备好在下次提交时包含在版本历史中。

  2. 未暂存的文件(Unstaged Files): 未暂存的文件是指已经被Git跟踪,但其修改尚未添加到暂存区的文件。这些文件的修改不会包含在下次的提交中,除非你先将它们添加到暂存区。

  3. 未跟踪的文件(Untracked Files): 未跟踪的文件是指尚未被Git跟踪的文件。这些文件既没有被添加到Git的版本控制中,也没有被列入Git的索引(暂存区)。未跟踪的文件可能是新创建的文件,或者是已存在但未被Git跟踪的文件。

与这些文件状态相对应,git stash命令的默认行为是只保存已修改但未暂存的文件和已暂存的文件,而不保存未跟踪的文件。这意味着在执行git stash命令时,未跟踪的文件不会被包含在stash中。

如果你希望git stash也保存未跟踪的文件,可以使用git stash --include-untracked选项或简写形式git stash -u。这样,git stash将保存除了未跟踪的文件外的所有修改,包括已暂存的文件和未暂存的文件。

总结

已暂存的文件是在暂存区中的修改,准备包含在下次提交中。

未暂存的文件是已被Git跟踪但未添加到暂存区的修改,不会包含在下次提交中。

未跟踪的文件是未被Git跟踪的文件,不包含在Git的版本控制中。

git stash默认只保存已修改但未暂存的文件和已暂存的文件,不保存未跟踪的文件。

使用git stash --include-untracked或git stash -u可以保存所有修改,包括未跟踪的文件。

相关文章:

用git stash暂存修改

git stash命令用于保存当前工作目录的临时状态&#xff0c;包括暂存区和已修改但未暂存的文件。它会将这些修改保存在一个临时区域&#xff08;即“堆栈”&#xff09;中&#xff0c;让你能够回到一个干净的工作目录&#xff0c;可以进行其他操作。等到你完成其他任务后&#x…...

一个适合练手的接口测试实战项目——慕慕生鲜

前言 最近很多粉丝找小月要接口测试项目练练手&#xff0c;看看实力&#xff01;今天&#xff0c;它来了 慕慕生鲜&#xff0c;完整版&#xff0c;文末有福利&#xff01; 干货来咯&#xff0c;收藏好&#xff01; 1. 接口测试需求分析 常见接口文档提供的两种方式 ①wor…...

window10/11 光学系统建模之Light Tools8.6 软件安装教程(亲测可用+附带免费资源可直接下载)

1.下载链接 &#xff08;免费分享&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1qVubyRSC93xT-GKeK-k3ow 提取码&#xff1a;vkho 2.安装顺序 即按照图里的1234的顺序先安装完注册表&#xff0c;驱动&#xff0c;和lighttools的程序 我个人在win10系统安装这些程…...

Vue3+ElementPlus el-date-picker时间选择器,设置最多选择60天区间内,必须选择大于今天

Vue3ElementPlus el-date-picker时间选择设置&#xff0c; 必须选择大于今天&#xff1b;最多选择60天区间内&#xff1b; 使用disabled-date&#xff1a; 具体实现代码&#xff1a; <el-date-pickerv-model"state.queryParams.dateTime":editable"false&q…...

2022年亚太杯APMCM数学建模大赛B题高速列车的优化设计求解全过程文档及程序

2022年亚太杯APMCM数学建模大赛 B题 高速列车的优化设计 原题再现&#xff1a; 2022年4月12日&#xff0c;中国高铁复兴号CR450动车组在开放线上成功实现单车时速435公里&#xff0c;相对速度870公里&#xff0c;创造了高铁动车组列车穿越开放线和隧道速度的世界纪录。新一代…...

OSI网络分层模型

OSI英文全文是Open System Interconnection Reference Model&#xff0c;翻译成中文就是开放式系统互联通信参考模型。 OSI模型分成了七层&#xff0c;部分层次与 TCP/IP 很像&#xff0c;从下到上分别是&#xff1a; 第一层&#xff1a;物理层&#xff0c;网络的物理形式&…...

EOS区块链keosd的RPC API

list_wallets 查看钱包列表 post v1/wallet/list_walletsapi: http://127.0.0.1:8888/v1/wallet/list_walletsparams: 无returns: ["testnet *" ]testnet&#xff1a;钱包名称create 创建钱包 post v1/wallet/createapi: http://127.0.0.1:8888/v1/wallet/createpa…...

React +AntD + From组件重复提交数据(已解决)

开发场景&#xff1a; react Hooks andt 提交form表单内容给数据库(使用antd的form组件) 问题描述 提交是异步的&#xff0c;请提交方式是POST 方式 提交表单内容给后端&#xff0c;却产生了两次提交记录&#xff08;当然&#xff0c;数据新增了两条数据&#xff09;。可以…...

spring的简单使用(配合Druid操作数据库)

文章目录 准备数据pom.xml文件中引用需要的库准备好dao层接口和service层接口和实现类准备好 jdbc.properties 和 user.properties编写Druid的jdbcConfig配置类编写spring的配置类SpringConfig编写Dao层的实现类的逻辑测试类参考文献 准备数据 create database if not exists …...

10.20作业

#include “widget.h” #include “ui_widget.h” Widget::Widget(QWidget *parent) QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); t new QTimer(this); connect(t, &QTimer::timeout, this, &Widget::timeout_Slot); ui->text->setPlacehold…...

笔记1 Compute Shaders

Wending 2022/10/29 15:43:54 Compute Shaders是在GPU运行却又在普通渲染管线之外的程序&#xff0c;通过Compute Shader我们可以将大量可以并行的计算放到GPU中计算从而节省CPU资源 Wending 2022/10/29 15:44:27 反正不是传统的shader 不常用 博毅创为Blake老师 2022/10/29 15…...

IntelliJ IDEA 2023版本 Debug 时没有Force Step Into 按钮解决方法

IntelliJ IDEA 2023版本 Debug 时没有Force Step Into 按钮解决方法 force step into作用是能够去查看原码&#xff0c; 新版本idea默认移除了这个按钮&#x1f622; 那么让我们来把它找出来叭✋ 但是我们可以通过设置&#xff0c;使用step into就可以进入系统方法。 1.单击…...

【2024秋招】用友后端BIP部门hr面-2023.8.31

反思 首先&#xff0c;我想为你提供一个背景&#xff1a;HR面试不仅仅是为了了解你的背景和经验&#xff0c;还包括你的性格、沟通能力、问题解决技巧、团队合作精神和其他软性技能。基于你提供的信息&#xff0c;我会提供一些可能影响offer级别的点&#xff1a; 答案的质量&a…...

[ Windows ] ping IP + Port 测试 ip 和 端口是否通畅

开发过程中经常会黑窗口中手动测试一下计划请求的目标ip和端口是否通畅&#xff0c;测试方式如下&#xff1a; 一、单纯测试ip是否能够 ping 通&#xff0c;这个比较熟悉了&#xff0c;运行 cmd 打开黑窗口 输入如下指令&#xff0c;能够如下提示信息&#xff0c;表示端口是通…...

Golang协程的概念、用法、场景及案例

在当今的软件开发领域中&#xff0c;高性能和并发性是很重要的。开发人员需要编写能够有效利用多核处理器的程序&#xff0c;以提高应用程序的性能和响应能力。Go语言&#xff08;Golang&#xff09;就是一种在这方面非常强大的编程语言&#xff0c;它提供了一种称为协程&#…...

Redis 主从复制,哨兵,集群——(3)集群篇

目录 1. 前篇回顾 2. Redis 集群是什么&#xff1f; 3. Redis 集群的优点 4. Redis 集群的槽位概念 5. 什么是分片&#xff1f; 6. 如何找到给定key的分片&#xff1f; 7. 分片槽位的设计有什么好处&#xff1f; 8. key映射到节点的三种解决方案 8.1 哈希取余分区 8.…...

Flink之Watermark水印、水位线

Watermark水印、水位线 水位线概述水印本质生成WatermarkWatermark策略WatermarkStrategy工具类使用Watermark策略 内置Watermark生成器单调递增时间戳分配器固定延迟的时间戳分配器 自定义WatermarkGenerator周期性Watermark生成器标记Watermark生成器Watermark策略与Kafka连接…...

uni-app:对数组对象进行以具体某一项的分类处理

一、原始数据 这里定义为五个数组&#xff0c;种类product有aaa,bbb两种 原始数据在data中进行定义 res: {"success": true,"devices": [{no: 0,product: aaa,alias: "设备1",assign: [["a1", "a2", "a3"],[&q…...

顺序队列----数据结构

队列的概念 队列&#xff0c;符合先进先出特点的一种数据结构&#xff0c;是一种特殊的线性表&#xff0c;但它不像线性表一样可以任意插入和删除操作&#xff0c;而是只允许在表的一端插入&#xff0c;也就是在队列的尾部进行插入&#xff1b;只允许在表的另一端进行删除&…...

【Python学习笔记】字符串格式化

1. printf 风格 这种格式化语法 和 传统的C语言printf函数 一样 。 salary input(请输入薪资&#xff1a;)# 计算出缴税额&#xff0c;存入变量tax tax int(salary) *25/100 # 计算出税后工资&#xff0c;存入变量aftertax aftertax int(salary) *75/100 print(税前薪资&…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...