最新のものを除くすべての隠し場所をgit stash list
から削除したいと思います。
例えば。単一のgitコマンドでstash1から3を削除したい:
stash@{0}: On master: Test related changes
stash@{1}: On master: Tets
stash@{2}: On master: Integrate bunyan logging and http2
stash@{3}: On master: Integrate bunyan logging and http2
私はこの答えをチェックしました https://stackoverflow.com/a/5737041/387894 、しかしそれは単一の隠し場所だけを削除するために適用可能です。 stash
esの範囲を削除するgitコマンドはありますか?
簡単な答え:いいえ。
少し長い答え:いいえ、しかしそれは些細なことです。スタッシュ1、2、および3をドロップします。スタッシュ#1をドロップすると、スタッシュ2と3はそれぞれスタッシュ1と2になります。新しいスタッシュ#1をドロップすると、スタッシュ#2(元々は#3でした)がスタッシュ#1になります。したがって、#1から始めて3つのスタッシュをドロップするには、スタッシュ#1を3回ドロップするだけです。
Stash 1から3を削除する場合は、シェルに移動して次のコマンドを入力します。
for n in {1..3}
do
git stash drop stash@{1}
done
出力
Dropped stash@{1} (79f369e9c4ce8348af8bd2da63f384cc7d02655e)
Dropped stash@{1} (744d2fc40e25f2db1bdc182d41f6eb9134957df4)
Dropped stash@{1} (7f9989207a675549866ab1fc7b15082eb4161e9f)
Git stashはスタック構造を使用するため、n番目のインデックスをドロップするたびに、スタックインデックスは1ずつ減少します。したがって、最終的には、スタッシュ1から3をドロップすることになります。したがって、このように、長さnのスタッシュを次のように繰り返すこともできます。
for n in {1..n}
do
git stash drop stash@{1}
done
次のようなスクリプトを使用できる最初の隠し場所を除いて、すべての古い隠し場所を削除したいとします。
for (( ; ; ))
do
git stash drop stash@{1}
Result = $?
if [ Result != 0 ]
then
break
fi
done
ドロップされたスタッシュのインデックスもログに記録したい場合は、以下に示すように、降順と$n
を使用できます。
for n in {3..1}; do git stash drop stash{$n}; done;
出力は次のようになります。
Dropped stash@{3} (beeaf3629b53d612b1a3fabb7b0c4f77d17e9b71)
Dropped stash@{2} (5a687ca9a93b3190882a9af2c15134e75f063f41)
Dropped stash@{1} (e33dfc42d03166def5dbb60baa975efb21b27f07)