我创建了一堆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}是否是我应用的存储。这有点单调乏味,特别是在应用存储后进行更改的情况下。 是否有更好的/“更少暴力”的方法来找出实际应用了哪个藏匿?非常感谢那些了解得更好的人的指示。
答案 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