是否可以在不执行git stash apply
的情况下判断是否已应用存储,因此不再需要存储?假设我只使用一个分支。
这可以通过在应用存储时使用pop
而不是apply
来防止,因此每次应用时都会删除存储。但是,我有时使用git stash来保存正在进行的工作的快照,而不是仅使用它来从一个任务切换到另一个任务。使用pop会有点失败。
答案 0 :(得分:10)
只要做一个差异,你就会看到。
git diff HEAD stash @ {0}
答案 1 :(得分:4)
您可以使用以下shell脚本获取带有复选标记的git 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
这将为您提供如下列表:
✔ 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测试)
答案 2 :(得分:0)
如果使用git diff stash,请确保使用Git 2.30(Q1 2021)。
在此之前,查看“ git stash drop
” (man)是否可以安全删除引用/隐藏代码的代码已变得更加小心。
请参见commit 4f44c56的René Scharfe (rscharfe
)(2020年10月24日)。
(由Junio C Hamano -- gitster
--在commit 30f5257中合并,2020年11月18日)
stash
:简化reflog空度检查报告人:Marek Mrva
签名人:RenéScharfe
调用rev-parse来检查drop子命令是否删除了最后一个存储并将其失败视为确认是脆弱的,因为该命令可能由于其他原因而失败,例如因为系统内存不足。
直接检查reflog是否为空,这更可靠。
因此,使用git rev-parse --verify --quiet
来检查是否丢弃了隐藏的存储盒。