首页 > 解决方案 > 带有 pathspec 的 Git 存储列表

问题描述

文档git stash list说_

该命令采用适用于该命令的选项git log来控制显示的内容和方式。见git-log[1]

如果我运行一个普通的git stash list,它会显示一个列表stash@{N},其中有很多“分支 1 上的 WIP”、“分支 2 上的 WIP”等等。

但是,如果我尝试git stash list -- doc寻找特别影响文档的存储,它会这样做......

HEAD@{33}: checkout: moving from master to abcdef123
HEAD@{46}: checkout: moving from branch1 to master
HEAD@{67}: pull: Fast-forward
HEAD@{68}: checkout: moving from branch1 to master
HEAD@{71}: pull: Fast-forward
HEAD@{74}: rebase finished: returning to refs/heads/branch2
HEAD@{75}: rebase: WIP
HEAD@{76}: rebase: WIP
HEAD@{77}: rebase: Docs: New feature explanation (This is a commit message)
HEAD@{78}: rebase: checkout branch3
HEAD@{79}: checkout: moving from branch1 to branch3
HEAD@{81}: rebase: updating HEAD
...

那是什么!?以及如何查看过滤到特定路径规范的存储?

标签: gitgit-stash

解决方案


git stash命令一个shell 脚本,这使得它对于 Git 源代码具有异常的可读性。它似乎不再是一个,并且由于上面的链接指向 Git 版本 2.21.0,该错误可能会得到或修复。

list_stash代码位于第402-405 行,主要包括运行:

git log --format="%gd: %gs" -g --first-parent -m "$@" $ref_stash --

$ref_stash默认情况下在哪里refs/stash。请注意$ref_stash在. 它应该更漂亮:既然你提供了 ,它应该把你的前置参数放在你的前面,然后把你的后置参数放在后面(并去掉你的),然后运行: "$@"----------

git log --format="%gd: %gs" -g --first-parent -m refs/stash -- doc

这会做你想做的事。相反,它最终运行:

git log --format="%gd: %gs" -g --first-parent -m -- doc -- refs/stash --

这意味着git log查看HEADreflog 而不是refs/stashreflog。


推荐阅读