2017-01-25 12 views
3

最新のものを除いてすべてのstash'esを削除したいと考えています。git stash listから削除します。git stashの範囲を削除するには?

など。私はこの答えhttps://stackoverflow.com/a/5737041/3878940が、唯一つのスタッシュを削除するために、その適用を確認

[email protected]{0}: On master: Test related changes 
[email protected]{1}: On master: Tets 
[email protected]{2}: On master: Integrate bunyan logging and http2 
[email protected]{3}: On master: Integrate bunyan logging and http2 

:私は、単一のgitコマンドでにスタッシュを削除したいです。 stashの範囲を削除するgitコマンドはありますか?

答えて

5

短い回答:いいえ。

少し長い回答:いいえ、でもそれは簡単です。スラッシュ1、2、3をドロップします。スラッシュ#1をドロップすると、スラッシュ2とスラッシュ3がそれぞれスラッシュ1と2になります。新しいstash#1をドロップするとstash#2(もともと#3)はstash#1になります。したがって、#1で始まる3つのstashを落とすには、stash#1を3回落とすだけです。

+0

あなたの答えがやや改善しました。むしろ、混乱を避け、落ちている間にstash idを調整するために、単にidの**降順で 'git stash drop stash @ {id}'を呼び出すだけです。だから、IDの1,2,3を落としたいなら、 'git stash drop stash @ {3}'と 'git stash drop stash @ {2}'と 'git stash drop stash @ {1}'を押してください。 –

+0

@DhirajGandhi:それでも、最後に#4が#1になる隠しが生じます。それはあなたがどれだけ多くのあなたが行く必要があるかを追跡するのに役立つかもしれませんが、その場合には価値があります。 – torek

4

あなたが3にスタッシュ1を削除したい場合は、単に次のコマンドをシェルと入力しに行く:

for n in {1..3} 
do 
git stash drop [email protected]{1} 
done 

出力

Dropped [email protected]{1} (79f369e9c4ce8348af8bd2da63f384cc7d02655e) 
Dropped [email protected]{1} (744d2fc40e25f2db1bdc182d41f6eb9134957df4) 
Dropped [email protected]{1} (7f9989207a675549866ab1fc7b15082eb4161e9f) 

Gitのスタッシュは、あなたがドロップするたびにスタック構造を使用しているのでスタックインデックスは1だけ減少します。 このように、ちょうど反復する長さnのstashをドロップすることができます:

for n in {1..n} 
do 
git stash drop [email protected]{1} 
done 
関連する問題