【日常开发】Git Stash使用技巧

文章目录

引言

今天给大家详细分享下git stash 命令使用详情, 因为使用 Git 进行版本控制的过程中,你是否常常遇到这样的情况:正在进行一项功能开发,代码写到一半,突然需要切换到其他分支去处理一些紧急事务,但又不想提交这些未完成的代码?或者在拉取远程分支的最新代码之前,想要先保存当前工作区的修改状态? 这时候,git stash 命令就成为了你的得力助手。

一、git stash 基础命令

(一)存储当前工作区的修改

这个命令会将当前工作目录和暂存区的所有未提交的修改保存起来,包括新增、修改和删除的文件,并将其存储在一个栈结构中,每个存储都可以附带一个描述信息(message),以便后续识别。执行该命令后,工作区会恢复到最近一次提交时的状态,你可以放心地进行其他操作,比如切换分支、拉取代码等。

  • 示例模板:git stash save [message]
bash 复制代码
# 没有message
git stash
# 有message
git stash save '正在开发的新功能,未完成阶段'

(二)查看存储列表

该命令的输出通常是一个列表,每个条目代表一个已保存的 stash

bash 复制代码
git stash list

二、查看存储的内容

(一)查看特定存储的详细内容

显示哪些文件被修改、新增或删除,让你快速了解存储的大致内容

  • 示例模板:git stash show -p [stash@{n}]
  • -p 选项表示以补丁的形式展示存储的内容,stash@{0} 表示最新的一次存储(n 从 0 开始递增,代表存储的顺序)。
bash 复制代码
  git stash show -p stash@{0}

(二)查看特定存储修改的文件列表

此命令只会列出被修改的文件列表,不显示具体的代码修改细节

  • 示例模板:git stash show [stash@{n}]
bash 复制代码
git stash show stash@{1}

三、恢复存储的修改

(一)恢复并删除存储

这个命令会将指定的存储(stash@{0})从栈中弹出,并将其中的修改应用到当前工作目录。如果在应用过程中遇到冲突,Git 会像合并分支时一样标记出冲突的部分,需要你手动解决冲突后再提交。一旦应用成功,该存储就会从存储列表中删除

  • 示例模板:git stash pop [stash@{n}]
bash 复制代码
git stash pop stash@{0}

(二)恢复但不删除存储

apply 命令与 pop 类似,会将指定存储(stash@{0})的修改应用到当前工作目录,但不同的是,它不会从存储列表中删除该存储。 这意味着你可以多次应用同一个存储,或者在应用后仍然保留存储记录,以便后续参考或在其他分支上应用

  • 示例模板:git stash apply [stash@{n}]
bash 复制代码
git stash apply stash@{0}
# 默认是应用第一个
git stash apply  

四、管理存储记录

(一)删除单个存储记录

当你确定不再需要某个特定的存储记录(stash@{3})时,可以使用这个命令将其从存储列表中删除,释放存储空间并保持存储列表的整洁。如果不指定 stash@{n},则默认删除最新的存储记录,所以在使用时要格外小心,确保删除的是你真正不再需要的存储。

  • 示例模板:git stash drop [stash@{n}]
bash 复制代码
 git stash drop stash@{3}

(二)清空所有存储记录

如果你想要一次性删除所有的存储记录,使用 git stash clear 命令。这是一个比较"强力"的操作,因为它会将所有的存储记录都清除,不可逆地删除所有未应用的代码变更存储。在执行此命令之前,一定要确认你已经不再需要这些存储,或者已经将其中重要的修改应用到了工作区或者备份到了其他地方,以免造成数据丢失。

bash 复制代码
git stash clear

五、git stash 的扩展用法

(一)存储特定文件或目录的修改

有时候,你可能并不想存储整个工作区的修改,而是只关注某些特定文件或目录的变更。--patch 选项允许你交互式地选择要存储的文件块,对于大型文件的部分修改非常有用;--keep-index 选项可以让你在存储修改时,保持暂存区的现有状态,即只存储工作区的修改,而不影响已经暂存的文件;--include-untracked 选项则会将未跟踪的文件也一并存储起来。

  • 示例模板:git stash push [--patch] [--keep-index] [--include-untracked] [<pathspec>...​]
bash 复制代码
  git stash push --patch src/

(二)从存储创建分支

如果你希望基于某个存储的修改创建一个新的分支来继续开发,可以使用这个命令。它会创建一个新的分支(new-branch),可以使用下面的命令

  • 示例模板:git stash branch <new-branch-name> [stash@{n}]
bash 复制代码
git stash branch new-branch stash@{0}

六、总结

git stash 是一个强大而灵活的 Git 工具,它为我们在复杂的开发过程中提供了便捷的代码变更管理方式。通过合理运用 git stash 的各种命令,我们可以在不影响代码版本历史的前提下,轻松地切换工作上下文,保存和恢复未完成的代码修改,以及对存储记录进行有效的管理.

相关推荐
Lw老王要学习1 分钟前
Linux架构篇、第五章git2.49.0部署与使用
linux·运维·git·云计算·it
爱学习的张哥11 分钟前
专栏项目框架介绍
git·fpga开发·udp·ddr·gt收发器
Aric_Jones3 小时前
lua入门语法,包含安装,注释,变量,循环等
java·开发语言·git·elasticsearch·junit·lua
Sapphire~9 小时前
odoo-049 Pycharm 中 git stash 后有pyc 文件,如何删除pyc文件
ide·git·pycharm
Willis_m13 小时前
Linux 服务器用 SSH 拉取多个 Git 工程
linux·服务器·git·ssh
1candobetter13 小时前
git如何将本地 dev 分支与远程 dev 分支同步
git
此方konata13 小时前
git常用命令
git
yuanbenshidiaos21 小时前
讲讲git 和svn
git·svn
刃神太酷啦1 天前
类和对象(1)--《Hello C++ Wrold!》(3)--(C/C++)
java·c语言·c++·git·算法·leetcode·github
s9123601011 天前
Git 用法总结
git