是否可以不做就知道是否已经应用了存储,因此不再需要git stash apply
?假设我只使用一个分支。
这可以通过使用pop
而不是apply
在应用存储时来防止,因此每次应用时都可以摆脱存储。但是,我有时会使用 git stash 来保存正在进行的工作的快照,而不是仅使用它来从一项任务切换到另一项任务。使用 pop 会在某种程度上打败它。
只需做一个差异,你就会看到。
git diff HEAD stash@{0}
git stash list
如果已经应用了复选标记,或者不需要应用它们,因为没有区别,您可以使用以下 shell 脚本来获取前缀。
git stash list | while read line; do \
ref=${line%%:*}; \
prefix=$(test $(git diff $ref | wc -l) = "0" && echo "✔ " || echo " "); \
echo "$prefix$line"; \
done
这将为您提供如下列表:
✔ stash@{0}: WIP on develop: 77a1a66 send 'social.share' message via 'view-req-relay'...
stash@{1}: WIP on bigcouch: 4bfa3af added couchdb filters...
如果你喜欢它,你可以将它添加为 git 别名,如下所示:
git config --global --add alias.stash-list '!git stash list | while read line; do ref=${line%%:*}; prefix=$(test $(git diff $ref | wc -l) = "0" && echo "✔ " || echo " "); echo "$prefix$line"; done'
git stash-list
(用 bash 和zsh测试)
如果您使用 git diff stash,请确保使用 Git 2.30(2021 年第一季度)。
在此之前,查看 " git stash drop
" ( man )是否可以安全地删除 refs/stash 的代码已经更加小心。
请参阅René Scharfe ( ) 的提交 4f44c56(2020 年 10 月 24 日)。(由Junio C Hamano 合并 -- --在提交 30f5257中,2020 年 11 月 18 日)rscharfe
gitster
stash
: 简化 reflog 空值检查报告人:Marek Mrva
签字人:René Scharfe
调用 rev-parse 以检查 drop 子命令是否删除了最后一个存储并将其失败视为确认是脆弱的,因为该命令可能由于其他原因而失败,例如因为系统内存不足。
直接检查 reflog 是否为空,这样更健壮。
因此,使用git rev-parse --verify --quiet
来检查丢弃的存储是否是 ast 已被替换。