如何删除 git 存储范围?
How to remove range of git stash?
我想从 git stash list
中删除所有隐藏的东西,最近的除外。
例如我想在单个 git 命令中删除存储 1 到 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
我检查了这个答案 ,但它只适用于删除一个存储。是否有任何 git 命令删除 stash
es 的范围?
简答:没有。
稍微长一点的回答:不,但这很微不足道。您想要删除存储 1、2 和 3。当您删除存储 #1 时,存储 2 和 3 分别变为存储 1 和 2。当您删除新的 stash #1 时,stash #2(原来是 #3)变成 stash #1。因此,要删除三个存储,从 #1 开始,只需删除存储 #1 三次。
如果要删除存储 1 到 3,只需转至 shell 并输入以下命令:
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。因此最终,您最终会删除 stashes 1 到 3。
所以,像这样你也可以删除一个长度为 n 的存储,就像这样迭代:
for n in {1..n}
do
git stash drop stash@{1}
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)
假设您想删除除第一个之外的所有旧存储,您可以使用如下脚本:
for (( ; ; ))
do
git stash drop stash@{1}
Result = $?
if [ Result != 0 ]
then
break
fi
done
如果您在 PowerShell 上使用 Git,您可以轻松获得它。有两种方法可以实现这一点。 (n 是藏品数量)
第一种方法,
for($i = 1; $i -lt n; $i++){ git stash drop "stash@{1}"}
第二种方法,
for($i = n-1; $i -gt 0; $i--){ git stash drop "stash@{$i}"}
我假设你有无数的藏品,你可以这样得到藏品的数量(n),
git stash list | measure-object -line
POSIX shell 和变量范围
#!/bin/sh
set -euo
for _ in `seq `; do
git stash drop stash@{}
done
我想从 git stash list
中删除所有隐藏的东西,最近的除外。
例如我想在单个 git 命令中删除存储 1 到 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
我检查了这个答案 ,但它只适用于删除一个存储。是否有任何 git 命令删除 stash
es 的范围?
简答:没有。
稍微长一点的回答:不,但这很微不足道。您想要删除存储 1、2 和 3。当您删除存储 #1 时,存储 2 和 3 分别变为存储 1 和 2。当您删除新的 stash #1 时,stash #2(原来是 #3)变成 stash #1。因此,要删除三个存储,从 #1 开始,只需删除存储 #1 三次。
如果要删除存储 1 到 3,只需转至 shell 并输入以下命令:
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。因此最终,您最终会删除 stashes 1 到 3。 所以,像这样你也可以删除一个长度为 n 的存储,就像这样迭代:
for n in {1..n}
do
git stash drop stash@{1}
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)
假设您想删除除第一个之外的所有旧存储,您可以使用如下脚本:
for (( ; ; ))
do
git stash drop stash@{1}
Result = $?
if [ Result != 0 ]
then
break
fi
done
如果您在 PowerShell 上使用 Git,您可以轻松获得它。有两种方法可以实现这一点。 (n 是藏品数量)
第一种方法,
for($i = 1; $i -lt n; $i++){ git stash drop "stash@{1}"}
第二种方法,
for($i = n-1; $i -gt 0; $i--){ git stash drop "stash@{$i}"}
我假设你有无数的藏品,你可以这样得到藏品的数量(n),
git stash list | measure-object -line
POSIX shell 和变量范围
#!/bin/sh
set -euo
for _ in `seq `; do
git stash drop stash@{}
done