使用以下命令,我找到了一个包含某个未跟踪文件的存储库:
git rev-list -g stash | xargs -n1 git ls-tree -r | sort -u | grep widget
此命令返回:
100644 blob 05e25619a6f2649b7d635b5aa897cbfc68a4f15d widget/app.css
,我现在如何展示这个藏物?
我试过:
git stash show -p stash@{100644}
返回的是什么stash@{100644} is not a valid reference
谢谢
发布于 2020-09-25 22:22:04
正如在其他答案中所说的:100644不是一个提交哈希,也不是一个藏号。您构建的命令实际上没有跟踪提交id,它生成了这个特定的ls-tree条目。
如果要查找包含文件widget/app.css的文件(Es),请尝试如下:
# if you have more than 50 stashes, replace '50' with a number big enough
for i in {0..50}; do
if git rev-parse --verify -q stash@{$i}:widget/app.css; then
echo "stash@{$i}"
fi
done发布于 2020-09-25 13:44:20
只要做:
git show 05e2561和其他的一样,存储只使用常规的git提交。
编辑:
正如OP在注释中提到的那样,上面的命令只显示一个blob,而不是commit。
我现在唯一的想法是:
git stash list以获取隐藏中所有提交散列的列表。然后,对于每个提交哈希,请执行:
git show --name-only abcd1234替换实际提交哈希。我确信可以编写一个shell脚本来实现自动化。
但是,正如我在评论中所说的,如果您有大量的存储提交,并且您正在使用该存储进行长期存储,则您做的git是错误的。您需要学习如何使用分支,或者您需要做的就是更频繁地提交master。
我可以问你,你为什么使用stash而不是commit?藏匿只是掩盖下的承诺,但伪装和变得更加复杂。我经常使用git,从来不使用stash。如果我需要节省工作和做其他事情,我只是做一个正常的承诺。
如果您必须使用stash,则应该只用于非常短期的使用,同时您可以将您的工作保存到另一个任务上。你的藏品几乎总是空的。
https://stackoverflow.com/questions/64065339
复制相似问题