我已经发现的东西:
git stash list
...列出我所有的藏匿处。
git stash show -p stash@{0} --name-only
列出该存储区中的所有文件(这里是位置0处的最新存储区)。
现在我有一个项目,其中包含数百个隐藏的旧更改,这些更改将不再需要。我知道我可以将它们全部删除:
git stash clear
...或这样删除单个存储区(此后将存储区删除87个存储区):
git stash drop stash@{87}
但是我想删除藏匿处3-107。我冒险地尝试:
git stash drop stash@{3-107} -- does not work
我该怎么做?
答案 0 :(得分:4)
您可以尝试以下方法:
i=3; while [ $i -lt 104 ]; then git stash pop stash@{3}; i=$(( $i + 1 )); done
始终丢弃3,因为当您丢弃3时,现在4是3,依此类推,因此您继续丢弃stash @ {3}。无论哪种方式,都需要格外小心!
答案 1 :(得分:2)
编辑:我们必须向后循环,因为删除存储空间会更改所有存储空间的索引。
git stash drop
一次不接受多个修订;
$ git stash drop stash@\{{4..1}\}
Too many revisions specified: 'stash@{4}' 'stash@{3}' 'stash@{2}' 'stash@{1}'
您可以在shell中使用循环来实现。例如在bash
;
$ for i in {4..1}; do
> git stash drop stash@{$i};
> done
Dropped stash@{4} (175f810a53b06da05752b5f08d0b6550ca10dc55)
Dropped stash@{3} (3526a0929dac4e9042f7abd806846b5d527b0f2a)
Dropped stash@{2} (44357bb60f406d29a5d39ea0b5586578223953ac)
Dropped stash@{1} (c97f46ecab45846cc2c6138d7ca05348293344ce)