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

Git Stash 用法详解

一、什么是 Git Stash?

Git Stash 是 Git 提供的一个非常实用的功能,用于临时保存工作目录中未提交的更改,以便你可以切换到其他分支工作,稍后再返回到这些更改。这在以下场景特别有用:

  • 当你正在开发一个功能,但需要立即修复一个紧急 bug
  • 当你需要切换到另一个分支,但不想提交当前未完成的工作
  • 当你需要拉取远程分支的更新,但本地有未提交的更改

二、基本用法

1. 保存当前更改

git stash

这是最基本的命令,它会将工作目录中所有未提交的更改(包括修改的文件和暂存的文件)保存到一个新的存储中,并将工作目录恢复到上一次提交的状态。

示例:

# 假设你修改了文件 file1.txt 和 file2.txt
echo "修改内容" >> file1.txt
echo "新内容" >> file2.txt# 查看状态
git status
# 输出显示有未暂存的更改# 保存更改
git stash
# 输出:Saved working directory and index state WIP on master: xxxxxxx 上次提交的信息# 再次查看状态
git status
# 输出显示工作目录干净,没有未提交的更改

2. 保存当前更改并添加注释

git stash save "你的注释信息"

添加注释可以帮助你在有多个存储时更容易识别它们。

示例:

git stash save "实现用户登录功能 - 未完成"

3. 列出所有存储

git stash list

这个命令会显示所有已保存的存储列表。

示例:

git stash list
# 输出示例:
# stash@{0}: WIP on master: xxxxxxx 实现用户登录功能 - 未完成
# stash@{1}: WIP on develop: yyyyyyy 修改首页布局

4. 应用最近的存储

git stash apply

这个命令会将最近的存储应用到当前工作目录,但不会从存储列表中删除它。

示例:

git stash apply
# 应用最近的存储到当前工作目录# 查看状态
git status
# 可以看到之前保存的更改已经恢复

5. 应用指定的存储

git stash apply stash@{n}

其中 n 是存储在列表中的索引。

示例:

git stash apply stash@{1}
# 应用第二个存储(索引为1)

6. 应用并删除存储

git stash pop

这个命令会应用最近的存储并从存储列表中删除它。

示例:

git stash pop
# 应用最近的存储并删除它git stash list
# 可以看到最近的存储已经被移除

7. 应用并删除指定的存储

git stash pop stash@{n}

示例:

git stash pop stash@{2}
# 应用索引为2的存储并删除它

8. 丢弃最近的存储

git stash drop

这个命令会删除最近的存储,但不会将其应用到工作目录。

示例:

git stash drop
# 删除最近的存储

9. 丢弃指定的存储

git stash drop stash@{n}

示例:

git stash drop stash@{1}
# 删除索引为1的存储

10. 清空所有存储

git stash clear

示例:

git stash clear
# 清空所有存储
git stash list
# 输出为空

11. 查看存储的内容

git stash show

这个命令会显示最近存储中更改的文件和行数。

示例:

git stash show
# 输出示例:
# file1.txt | 3 +++
# file2.txt | 5 +++++

要查看更详细的更改内容,可以使用:

git stash show -p

示例:

git stash show -p
# 输出详细的差异内容

三、高级用法

1. 只保存暂存的更改

git stash --staged

这个命令只会保存已经暂存的更改,而不会保存未暂存的更改。

示例:

# 修改文件并暂存部分更改
echo "修改1" >> file.txt
git add file.txt
echo "修改2" >> file.txt# 只保存暂存的更改(即"修改1")
git stash --staged# 此时工作目录中只剩下"修改2"
git status

2. 保存未跟踪的文件

默认情况下,git stash 不会保存未跟踪的文件。要保存未跟踪的文件,可以使用:

git stash -u
# 或者
git stash --include-untracked

示例:

# 创建一个新文件(未跟踪)
echo "新文件" > newfile.txt# 保存所有更改,包括未跟踪的文件
git stash -u# 此时工作目录干净,没有文件
dir

3. 保存所有文件(包括忽略的文件)

git stash -a
# 或者
git stash --all

这个命令会保存所有更改,包括未跟踪的文件和被 .gitignore 忽略的文件。

示例:

# 创建一个被忽略的文件(假设 node_modules/ 在 .gitignore 中)
mkdir -p node_modules
echo "忽略的文件" > node_modules/ignored.txt# 保存所有更改,包括被忽略的文件
git stash -a

4. 从存储创建分支

如果你想基于某个存储创建一个新的分支,可以使用:

git stash branch 分支名 stash@{n}

这个命令会创建一个新的分支,应用指定的存储,然后删除该存储。

示例:

git stash branch login-feature stash@{0}
# 基于第一个存储创建一个名为 login-feature 的分支
# 并在创建后删除该存储

5. 暂存的保留和恢复

Git Stash 不仅保存修改的文件内容,还会保存暂存的状态。当你应用存储时,暂存的文件会被恢复到暂存状态,未暂存的文件会被恢复到未暂存状态。

示例:

# 修改两个文件
echo "修改1" >> file1.txt
echo "修改2" >> file2.txt# 暂存其中一个文件
git add file1.txt# 保存所有更改
git stash# 切换分支、执行其他操作...# 恢复存储
git stash pop# 此时 file1.txt 仍然处于暂存状态,file2.txt 处于未暂存状态
git status

四、最佳实践

  1. 使用有意义的注释:使用 git stash save "注释" 为存储添加描述性的注释,这样更容易在列表中识别它们。

  2. 定期清理:使用 git stash list 查看所有存储,删除不再需要的存储以保持存储列表的整洁。

  3. 不要过度依赖:Git Stash 适合短期存储未完成的工作,不建议长期使用。对于长期未完成的功能,考虑创建特性分支。

  4. 谨慎处理未跟踪的文件:记住 git stash 默认不会保存未跟踪的文件,需要时使用 -u-a 参数。

http://www.dtcms.com/a/523947.html

相关文章:

  • tailwindcss使用@apply指令定义自己的样式
  • Ubuntu安装nvm(无需梯子自动连接github下载安装)
  • 襄阳云平台网站建设做网络竞拍的网站需要什么
  • 一个虚拟主机怎么做多个网站建立网站花钱吗
  • MySQL一篇速通
  • 用 Cloudflare + Gmail 免费搭建自定义域名邮箱(example.com 实操教程)
  • 02_prometheus监控Grafana展示
  • MYSQL之内置函数
  • 网站内容维护外包协议自己建网站难吗
  • Linux修炼:基础IO(二)
  • 什么是知识茧房,如何破除?是不是应该破除?
  • 李嘉诚发展史
  • Android15适配Edge
  • 标准NEMA语句GST及说明
  • php网站建设设计方法wordpress点击图片悬浮
  • Java的匿名内部类(重要)
  • 基于PCA算法降维设备多维度传感器数据
  • java基础-方法
  • 51单片机基础-DS18B20温度传感器
  • 时空的几何化:论黑洞视界下光速的绝对不变性与表观变异
  • Uni-App(Vue3 + TypeScript)项目结构详解 ------ 以 Lighting-UniApp 为例,提供源代码
  • 如何帮网站广州广告推广公司
  • EPLAN电气设计常见报错与解决方案(一)
  • Unity TextMeshPro 输入表情
  • php简易企业网站源码nodejs网站开发
  • 《打破数据孤岛:3D手游角色表情骨骼协同的实践指南》
  • 【数据结构】数据结构核心考点:AVL树删除操作详解(附平衡旋转实例)
  • 当“Make”坏了,我们该如何“Make”
  • 【北京迅为】iTOP-4412精英版使用手册-第六十七章 USB鼠标驱动详解
  • 基于Three.js在Vue中实现3D模型交互与可视化