用git stash暂存修改

news2024/11/19 16:43:49

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可以保存所有修改,包括未跟踪的文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

立即报名 | 云原生 + AI Meetup 成都站 11.4 正式开启

2023 年&#xff0c;KubeSphere 社区已经在深圳、杭州、上海三个城市各组织了一场线下 Meetup。第四站&#xff0c;我们将走进天府成都。 11 月 4 日&#xff0c;云原生 AI Meetup 成都站将正式开启&#xff01; 此次 Meetup&#xff0c;我们邀请到了蚂蚁集团、云猿生数据、…

系列十二、Redis的主从复制

一、概述 主从复制架构仅仅用来解决数据的冗余备份&#xff0c;从节点仅仅用来同步数据。 二、架构图 三、搭建主从复制 # 1、准备3台机器并修改配置 -- master port 7379-- slave1 port 7380 slaveof masterip masterport-- slave2 port 7381 slaveof masterip masterpor…

美创科技入选“内蒙古自治区第一届网络安全应急技术支撑单位”

近日&#xff0c;内蒙古自治区党委网信办、国家网络应急技术处理协调中心内蒙古分中心评选“内蒙古自治区网络安全应急技术支撑单位”结果公布。 经自治区各地区、各部门和单位推荐各单位自主申报&#xff0c;资料审查和专家评审等环节&#xff0c;美创科技成功入选“内蒙古自治…

win10下yolov7 tensorrt模型部署

TensorRT系列之 Win10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署…

【数据结构】排序--归并排序

目录 一 基本思想 二 代码实现 三 非递归归并排序 一 基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff…

linux常见命令-文件目录类

9.4 文件目录类 &#xff08;1&#xff09;pwd 指令:显示当前工作目录的绝对路径 &#xff08;2&#xff09;Is指令:查看当前目录的所有内容信息 基本语法&#xff1a; ls [选项,可选多个] [目录或是文件] 常用选项:-a:显示当前目录所有的文件和目录&#xff0c;包括隐藏的…

02Nacos和Feign及Gateway配置

一、Nacos配置管理 1.统一配置管理 配置更改热更新 ①在Nacos中添加配置信息&#xff1a; ②在弹出表单中填写配置信息&#xff1a; 2.配置获取的步骤如下 配置文件bootstrap.yml的优先级比application.yml优先级高。把nacos地址放入bootstrap.yml。 ①在userservice中引入N…

Python —— Reference | hou

Houdini有非常多的Python模块可使用&#xff0c;不止一个hou&#xff0c;如hutil、toolutils、husd、kramautils等&#xff0c;只是帮助文档并没有提起&#xff0c;可从源代码docstring中查询&#xff1b; //查询有效的模块 help(modules) hou模块按功能可分为三类&#xff1a;…

windows 10下安装Pytorch的操作文档与避坑指南

前言 PyTorch3D 是 Facebook AI Research (FAIR) 开发的一个用于 3D 计算机视觉任务的开源深度学习库。它是建立在 PyTorch 框架之上的&#xff0c;并旨在为研究人员和工程师提供处理 3D 数据、渲染和几何计算的工具和模块。 PyTorch3D的用途&#xff1a; 3D 几何操作&#x…

Linux 内核启动分析

Linux 内核启动分析-BugMan-ChinaUnix博客 通过《Linux应用程序elf描述》&#xff0c;我们了解到一个应用程序编译后&#xff0c;最终会按照指定方式进行链接&#xff0c;而我们通过ld --verbose可以查看对应应用的默认链接方式。那么对于Linux内核呢&#xff1f;毫无疑问&…

大模型背景下软件工程的机遇与挑战

点击链接了解详情 本文作者&#xff1a;汪晟杰 导语:AISE&#xff08;AI Software Engineering&#xff09;有人说是软件工程 3.0&#xff0c;即基于大模型&#xff08;LLM - Large Language Model&#xff09;时代下的软件工程。那么究竟什么是 AISE&#xff0c;他的发展历程对…

Java学习入门偏(2)

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; Hello&#xff0c;亲爱的各位友友们&#xff0c;好久不见&#xff0…

官媒代运营:内容营销是什么?为什么要做内容营销?

在当今数字化时代&#xff0c;信息传播的速度和途径前所未有地广泛&#xff0c;企业们正在寻找新的方法来吸引潜在客户并保持现有客户的忠诚度。在这个背景下&#xff0c;内容营销崭露头角&#xff0c;成为了企业推广和营销的一项重要策略。 今天媒介易来跟大家分享干货知识&am…

Mini小主机All-in-one搭建教程6-安装苹果MacOS系统

笔者使用的ESXI7.0 Update 3 抱着试试的态度想安装一下苹果的MacOS系统 主要步骤有2个 1.解锁unlocker虚拟机系统 2.安装苹果MacOS系统 需要下载的文件 unlocker 这一步是最耗时间的&#xff0c;要找到匹配自己系统的unlocker文件。 https://github.com/THDCOM/ESXiUnloc…

VMware vCenter Server 6.7安装过程记录

0、前言 最近由于一些原因需要安装测试VMware ESXi&#xff0c;无奈所有服务器都是十几年前的&#xff0c;配置低也不支持。后来通过VMware兼容性列表查询&#xff0c;快要放弃的时候发现唯一一台Dell R420&#xff0c;如获至宝。通过查询得知最高支持到6.5 U3&#xff0c;好在…

214. Devu和鲜花

214. Devu和鲜花 - AcWing题库 如果每个盒子里的花的数量是无限的&#xff0c;用隔板法可以得出答案是 现在每个盒子中区的花数要满足n个条件 我们可以求答案的补集&#xff0c;用全部方案数减去补集方案数 每一个不符合条件的要求为&#xff0c;设为Bi 补集方案数为就成了…

内存卡怎么格式化?2个方法就足够!

“我是一名摄影业余爱好者&#xff0c;之前的内存卡里存了很多的文件&#xff0c;导致容量满了。我想将内存卡格式化后继续使用&#xff0c;但是不知道应该如何操作&#xff0c;谁能给些建议吗&#xff1f;” 内存卡格式化是维护存储设备性能和数据安全的关键操作之一。当我们发…

CRM系统在销售目标管理中的作用是什么?

销售管理者为了激励销售人员、评估业绩、进行奖励&#xff0c;往往需要建立一个基本标准&#xff0c;就是人们常说的销售目标。设定销售目标时&#xff0c;既要激励到员工&#xff0c;又不能把标准定得过高。CRM系统在销售目标管理中起到什么作用&#xff1f;该如何通过CRM销售…

yolov作者简介

作者简介 作者叫Joseph Redmon&#xff0c;在谷歌学术上搜索作者的简介。 地址&#xff1a;‪Joseph Redmon‬ -巨人学术搜索‬‬ (cljtscd.com) 他提出了最著名的YOLO算法。其中YOLOV1的引用量达到了40287次。 gitihub地址&#xff1a;github地址 主页&#xff1a;个人主页

复杂业务逻辑的判断与优化

作者 刘希忱 在日常开发工作当中&#xff0c;优秀的用户界面数据库、构建工具、样式预处理器是前端现工作阶段必不可少的三大利器&#xff0c;很多优秀的团队已经为我们提供了很多便利的解决方案&#xff0c;但仍然有很多开发场景需要提升优化&#xff0c;比如声明、输出、判…