10

是否可以不做就知道是否已经应用了存储,因此不再需要git stash apply?假设我只使用一个分支。

这可以通过使用pop而不是apply在应用存储时来防止,因此每次应用时都可以摆脱存储。但是,我有时会使用 git stash 来保存正在进行的工作的快照,而不是仅使用它来从一项任务切换到另一项任务。使用 pop 会在某种程度上打败它。

4

3 回答 3

10

只需做一个差异,你就会看到。

git diff HEAD stash@{0}

于 2011-11-01T09:28:44.220 回答
4

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测试)

于 2011-11-23T13:51:07.717 回答
0

如果您使用 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 已被替换。

于 2020-11-21T20:13:50.430 回答