【问题标题】:figuring out which git stash is applied找出应用了哪个 git stash
【发布时间】:2018-03-28 20:02:25
【问题描述】:

我创建了一堆存储(每个都有一条消息,顺便说一句,使用'git stash save "my message"'),然后应用其中一个存储(使用'git stash apply stash@{n}')不是最近的存储。

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

为了弄清楚我可能应用了哪个存储,我查看了文档和 SO 问题,但没有找到任何线索。我唯一想到的就是做

git diff > mydiff.txt

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

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

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

diff mydiff.txt 1.txt

确定 stash@{1} 是否是我申请的。这有点乏味,尤其是在应用存储后进行更改的情况下。 有没有更好的/“更少暴力”的方法来找出实际应用了哪个存储?非常感谢了解更多的人的任何指点。

【问题讨论】:

  • 恐怕只有蛮力的方式......应用存储只会应用其更改,不会记录已应用存储的任何地方

标签: git diff git-stash


【解决方案1】:

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

history | grep "git stash apply"

应该给你最近应用的 git stash。


如果这不是一个选项 - 蛮力是唯一的方法。

不过,您可以问自己,相关的存储是否会更类似于当前的差异,然后是 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 

【讨论】:

  • 感谢您提供有关检查历史记录和编写差异的 num 行脚本的想法。不幸的是,在我的情况下,这两个藏匿处有相似数量的不同行。但好主意,都一样。
猜你喜欢
  • 2013-12-22
  • 2010-12-26
  • 2013-03-26
  • 2011-09-29
  • 2019-03-05
  • 2022-06-16
  • 2014-03-11
  • 2017-11-25
  • 2013-02-23
相关资源
最近更新 更多