当前位置:   article > 正文

git stash 用法总结_git stashes

git stashes

1,介绍

场景1:

如果正在A分支做开发,但 B 分支的代码测出bug需要修改,所以需要从A分支切换到B分支。

此时可这样处理:在A分支 add + commit 之后,再切换到 B 分支。但这样做有2个问题:

  1. 增加了不必要的 commit,虽然之后可以通过 git commit --amend 来修改,
  2. A 分支的功能写了一半,此时 commit,到时再切换回 A 分支时还得查看 commit 才能知道之前修改的内容,比较麻烦。

场景2:

在 A 分支开发到一半发现使用错分支了,应该在 B 分支开发,需要将当前已修改的内容得全部平移到B分支,同时不影响当前分支和版本库。


上面的情况,最好用的办法就是 stashes 存储栈,它的所有操作不会影响到版本库。

2,常用命令

stashes 存储栈,遵循后进先出

2.1,基础

# 查看帮助(所有命令列表)
git stash -h
  • 1
  • 2
# 将当前工作区和暂存区的代码存储到 stashes栈中。
git stash
  • 1
  • 2
# 取出最近的一条 stash,并在 stashes 栈中删除。
git stash pop
# 取出最近的一条 stash,stashes 栈中不删除。
git stash apply

# 不取出,直接在 stashes 栈中删除最近的一条 stash
git stash drop
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

所以,git stash pop = git stash apply + git stash drop

# 查看 stashes 列表
git stash list
  • 1
  • 2
# 清空 stashes 栈
git stash clear
  • 1
  • 2

所以,

场景1,可以直接在 A 分支执行 git stash,在 B 分支开发完之后再切换到 A 分支,执行 git stash pop 即可。

场景2,可以直接在 A 分支执行 git stash,切换到 B 分支后执行 git stash pop 即可。

2.2,进阶

1,存储时指定备注

git stash save 测试stash
# or
git stash push -m 测试stash
  • 1
  • 2
  • 3

缺图查看效果

2,通过索引来操作指定的存储

# 操作 stash@{1}
git stash pop 1
# or 这里一定要加引号,否则报错。
git stash pop "stash@{1}"
  • 1
  • 2
  • 3
  • 4

git stash applygit stash drop 同理。

3,修改存储规则

默认存储规则:不包括工作区新增文件(未被跟踪的文件)和 .gitignore 忽略的文件,包括工作区和暂存区的修改。

  1. -u--include-untracked 表示包括未被跟踪的文件。
git stash save 备注 -u
  • 1
  1. -a--all 表示包括 .gitignore 忽略的文件。
git stash save 备注 -a
  • 1
  1. -k--keep-index 表示不包括暂存区的修改。
git stash save 备注 -k
  • 1

2.3,查看 stash 修改的具体内容

查看命令 git stash show 并没有介绍,是因为 vscode 自带的版本管理非常好用,可以详细的查看每个 stash 做了哪些修改。

可以看到不止是 stashes,每条 commit 也能随时查看。

在这里插入图片描述


以上。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/450580
推荐阅读
相关标签
  

闽ICP备14008679号