10

スタッシュがすでに適用されているかどうか、したがって不要になったのかどうかを、実行せずに判断することは可能git stash applyですか?ブランチを1つだけ使用していると仮定します。

これは、スタッシュを適用するときpopではなく使用することで防ぐことができるapplyため、適用するたびにスタッシュを取り除きます。ただし、あるタスクから別のタスクに切り替えるためだけに使用するのではなく、進行中の作業のスナップショットを保持するためにgitstashを使用することがあります。ポップを使用すると、それをいくらか打ち負かすでしょう。

4

3 に答える 3

10

違いを作るだけで、あなたは見るでしょう。

git diff HEAD stash @ {0}

于 2011-11-01T09:28:44.220 に答える
4

次のシェルスクリプトを使用して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でテスト済み)

于 2011-11-23T13:51:07.717 に答える
0

git diff stashを使用する場合は、必ずGit 2.30(Q1 2021)を使用してください。

git stash dropその前に、 " " manがrefs/stashを安全に削除できるかどうかを確認するコードがより注意深くなりました。

RenéScharfe ( )によるcommit 4f44c56(2020年10月24日)を参照してください。濱野純雄による合併---コミット30f52572020年11月18日rscharfe
gitster

stash:reflogの空のチェックを簡素化する

報告者:Marek Mrva
署名者:RenéScharfe

rev-parseを呼び出して、dropサブコマンドが最後のstashを削除したかどうかを確認し、その失敗を確認として扱います。これは、システムのメモリが不足しているなど、他の理由でコマンドが失敗する可能性があるためです。

代わりに、reflogが空であるかどうかを直接確認してください。これは、より堅牢です。

したがって、git rev-parse --verify --quietスタッシュがドロップされたかどうかを確認するための使用は、交換されたものでした。

于 2020-11-21T20:13:50.430 に答える