你如何判断是否不再需要git藏匿?

时间:2011-11-01 05:52:50

标签: git git-stash

是否可以在不执行git stash apply的情况下判断是否已应用存储,因此不再需要存储?假设我只使用一个分支。

这可以通过在应用存储时使用pop而不是apply来防止,因此每次应用时都会删除存储。但是,我有时使用git stash来保存正在进行的工作的快照,而不是仅使用它来从一个任务切换到另一个任务。使用pop会有点失败。

3 个答案:

答案 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 dropman是否可以安全删除引用/隐藏代码的代码已变得更加小心。

请参见commit 4f44c56René 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来检查是否丢弃了隐藏的存储盒。