git stash 暂存操作

多人开发,经常遇到开发某一个分支时,需要处理其他事情,这时就可以暂存手头的工作,进行其他工作,完事后再恢复,继续工作。

暂存操作

# 查看当前状态
git status 
# 如果有修改,添加修改文件
git add .
# 暂存操作
git stash  或
git stash save '本次暂存的标识名字'
git stash --include-untracked

默认情况下 git stash 会暂存下列文件

  • 添加到暂存区的修改
  • git跟踪的但并未被添加到暂存区的修改

但不会缓存以下文件

  • 在工作目录中的新文件
  • 被忽略的文件

git stash 命令提供了参数用于缓存上面两种类型的文件。使用 -u 或者 --include-untracked 可以 stash untracked 文件。使用 -a 或者 --all 命令可以 stash 当前目录下的所有修改。

查看当前暂存的记录

# 查看记录
git stash list

恢复暂存的工作

  • pop命令恢复,恢复后,暂存区域会删除当前的记录
# 恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash pop stash@{index}
  • apply命令恢复,恢复后,暂存区域会保留当前的记录
# 恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash apply stash@{index}
# 运行 git stash apply 命令时带上一个 --index 选项 会重新应用被暂存的变更
git stash apply --index

删除暂存

# 删除某个暂存, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash drop stash@{index}
#删除全部暂存
git stash clear

查看制定stash diff

git stash show stash@{index} 
# 查看特定stash的全部diff
git stash show stash@{index} -p
git stash show stash@{index} --patch

从暂存中创建分支

$ git stash brach testchanges
Switched to a new branch 'testchanges'
giOn branch testchanges
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	new file:   test.sh

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	abc.sh

Dropped refs/stash@{0} (a36d40d9c0383fd15b7d5d583fcc631fa33fb476)

.3 Git 工具 - 储藏(Stashing)

  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22