有时候切分支前想先把工作区清干净,但目录里还有刚建的文件。普通 git stash 不会收起未跟踪文件,这时可以用 -u。
环境:Git 2.30+。可以开个空目录试:
mkdir git-stash-u-demo && cd git-stash-u-demo
git init
printf 'base\n' > app.txt
git add app.txt
git commit -m 'init'
printf 'base changed\n' > app.txt
printf 'draft\n' > draft.txt
git status --short
git stash push -u -m 'wip with draft'
git status --short
git stash pop
git status --short
第一次状态里会看到已修改的 app.txt 和未跟踪的 draft.txt。stash -u 后工作区会干净一些,pop 之后两类改动都会回来。
这个适合临时切上下文。要是里面有不想带走的缓存文件,还是先看一眼 git status --short 比较稳。