git stash 命令详解(保存开发进度)

2022-12-16 21:37:41 浏览数 (1)

  • 1. 应用场景

  • 2. 添加储藏
  • 3. 查看储藏
  • 4. 删除储藏
  • 5. 使用储藏
  • 6. 常见用法
1. 应用场景

git stash 命令用于将工作区中的更改和暂存区中的内容储存起来

日常开发中,会经常遇到这种场景

我们正在 dev 分支开发新功能,做到一半时,产品经理过来和我们反馈了一个紧急 bug,需要马上解决,但是做了一半的新功能又不想提交到版本库。这时可以使用 git stash push 先将当前进度保存起来,然后去修复 bug,修复完后使用 git stash apply 恢复之前保存的进度即可

场景1、需要切换到另一个分支(master)处理 bug

代码语言:javascript复制
git stash push -m '功能开发中'
git checkout master

场景2、需要回到新功能编写前的状态,也就是 dev 分支的最新提交记录

代码语言:javascript复制
git stash push -m '功能开发中'

使用 git stash 的前提必须是版本库中已有提交记录,否则会出现下面提示

代码语言:javascript复制
$ git stash
# 您还没有初始提交
You do not have the initial commit yet

没有可以储存的内容(工作区中没有更改,暂存区中也没有内容)

代码语言:javascript复制
$ git stash
# 没有要保存的本地更改
No local changes to save
2. 添加储藏

添加储藏

代码语言:javascript复制
git stash

-m,--message 添加储藏和备注信息

代码语言:javascript复制
git stash push -m <message>
3. 查看储藏

查看所有储藏(所有分支共享储藏内容,而不是像提交记录每个分支都是独立的)

代码语言:javascript复制
git stash list

查看文件变动差异

代码语言:javascript复制
# 显示哪些文件变动了几行
git stash show <stash>
# 显示更加详细的变动信息,可以看到新增、减少了什么内容
git stash show -p <stash>
4. 删除储藏

删除某个储藏

代码语言:javascript复制
git stash drop <stash>

清除所有储藏

代码语言:javascript复制
git stash clear
5. 使用储藏

应用储藏

代码语言:javascript复制
# 应用指定的储藏
git stash apply <stash>
# 应用并删除指定的储藏
git stash pop <stash>

<stash> 指的是 git stash list 命令输出结果左侧的值,如下图所示

代码语言:javascript复制
# 错误:您对以下文件的本地更改将被“合并”覆盖
error: Your local changes to the following files would be overwritten by merge:
    1.txt
# 请在合并前提交或隐藏更改
Please commit your changes or stash them before you merge.
6. 常见用法

代码语言:javascript复制
# 添加存储
git stash push -m <message>
# 查看所有存储
git stash list
# 查看储藏文件差异
git stash show -p <stash>
# 应用储藏
git stash apply <stash>
# 应用并删除储藏
git stash pop <stash>
# 删除指定储藏
git stash drop <stash>
# 清空储藏
git stash clear

0 人点赞