找出应用了哪个git stash

时间:2018-03-28 20:02:25

标签: git diff git-stash

我创建了一堆stashes(每个都有一个消息btw,使用'git stash save“我的消息”')然后应用其中一个stashes(使用'git stash apply stash @ {n}')这是不是最近的藏匿处。

现在几天后,我不记得我申请了哪一个。我运行了一堆长时间运行的测试,这些测试在应用存储后通过,因此我知道答案非常重要。

为了弄清楚我应用了哪些藏匿,我通过文档和SO问题查看,但没有找到线索。我想到的唯一想法是做

git diff > mydiff.txt

然后将mydiff.txt与为stashes获取的每个补丁文件进行比较。也就是说,获取第二个存储的补丁:

git show -p stash@{1} > 1.txt

并将mydiff.txt与1.txt进行比较:

diff mydiff.txt 1.txt

判断存储@ {1}是否是我应用的存储。这有点单调乏味,特别是在应用存储后进行更改的情况下。 是否有更好的/“更少暴力”的方法来找出实际应用了哪个藏匿?非常感谢那些了解得更好的人的指示。

1 个答案:

答案 0 :(得分:1)

如果您从终端运行存储,您可以检查最近运行的命令的bash历史记录 - 一个简单的

history | grep "git stash apply"

应该为您提供最近应用的git存储。

如果这不是一个选择 - 蛮力是唯一的出路。

尽管如此,你可以问自己,相关的藏匿点是否与当前的差异更加相似,然后你的git历史记录中的任何其他藏匿处(即,你没有任何琐碎的藏匿处)。如果是这种情况,您可以通过编写一个简单的脚本来智能化您的方法,该脚本将每个存储与当前差异进行比较,并为您提供存储版本和当前差异之间不同的行数 - 数字越小不同的线条越好:

git stash list | wc -l # find number of stashes to look through
git diff > current_diff.txt
# while loop for the count in stash list
git show -p stash@{iter} > iter.txt
diff iter.txt current_diff.txt | wc -l > iter_diff.txt