Git 列出具体来自一个分支的藏品
Git list out stashes specifically from one branch
我有 2 个分支:Section9 和 s9feature。在分支 s9feature 上,我创建了 stash
,然后我在 Section9 分支上创建了 checkout
,并希望查看具体来自 s9feature 的隐藏列表。我知道我可以 运行 git stash list
或 git reflog stash
但我需要特别列出来自 s9feature
的藏匿处
存储基于提交,而不是分支。但是,存储的默认“标题”——实际上只是它的提交消息,因为每个存储只是一个不在 any branch1[=35 上的提交=]—WIP on <em>branch</em>
的形式。因此,您可以 运行 git stash list
,然后在其输出上使用 filter 来提取包含分支名称的任何行。例如:
git stash list | grep s9feat
(记住 grep
搜索任何子字符串,所以只要 s9feat
足够长以区分有趣的隐藏和不感兴趣的隐藏,这就是我们在这里所需要的)。
如果您更改了藏品的标题,当然,这将不起作用。由于分支名称没有意义且与 Git 无关,并且仅出现在 human-oriented message 部分,因此您需要更复杂的东西才能找到有趣的存储—除非,也就是说,您已经将有趣的部分放入这些更改后的标题中。
1从技术上讲,每个存储至少 两次 次提交。使用特定选项创建的存储添加 third 提交以保存未跟踪的文件。
However, the default "title" of a stash has the form WIP on branch
问题是:它不显示创建它的分支的完整名称。不在 Git 2.36(2022 年第二季度)
之前
"git checkout -b
"(man) branch/with/multi/level/name && git stash
(man) 只记录了分支名称的最后一级组成部分,已用Git 2.36 ( 2022 年第二季度)。
参见 commit ceaf037 (24 Jan 2022) by Glen Choo (chooglen
)。
(由 Junio C Hamano -- gitster
-- in commit 11da0a5 合并,2022 年 3 月 6 日)
stash
: strip "refs/heads/" with skip_prefix
Reported-by: Kraymer
Reported-by: Daniel Hahler
Helped-by: Jeff King
Signed-off-by: Glen Choo
When generating a message for a stash, "git stash
"(man) only records the part of the branch name to the right of the last /".
e.g.
if HEAD is at "foo/bar/baz", "git stash
" generates a message prefixed with WIP on baz:
instead of WIP on foo/bar/baz
:.
Fix this by using skip_prefix()
to skip "refs/heads/
" instead of looking for the last instance of "/
".
我有 2 个分支:Section9 和 s9feature。在分支 s9feature 上,我创建了 stash
,然后我在 Section9 分支上创建了 checkout
,并希望查看具体来自 s9feature 的隐藏列表。我知道我可以 运行 git stash list
或 git reflog stash
但我需要特别列出来自 s9feature
存储基于提交,而不是分支。但是,存储的默认“标题”——实际上只是它的提交消息,因为每个存储只是一个不在 any branch1[=35 上的提交=]—WIP on <em>branch</em>
的形式。因此,您可以 运行 git stash list
,然后在其输出上使用 filter 来提取包含分支名称的任何行。例如:
git stash list | grep s9feat
(记住 grep
搜索任何子字符串,所以只要 s9feat
足够长以区分有趣的隐藏和不感兴趣的隐藏,这就是我们在这里所需要的)。
如果您更改了藏品的标题,当然,这将不起作用。由于分支名称没有意义且与 Git 无关,并且仅出现在 human-oriented message 部分,因此您需要更复杂的东西才能找到有趣的存储—除非,也就是说,您已经将有趣的部分放入这些更改后的标题中。
1从技术上讲,每个存储至少 两次 次提交。使用特定选项创建的存储添加 third 提交以保存未跟踪的文件。
However, the default "title" of a stash has the form WIP on branch
问题是:它不显示创建它的分支的完整名称。不在 Git 2.36(2022 年第二季度)
之前"git checkout -b
"(man) branch/with/multi/level/name && git stash
(man) 只记录了分支名称的最后一级组成部分,已用Git 2.36 ( 2022 年第二季度)。
参见 commit ceaf037 (24 Jan 2022) by Glen Choo (chooglen
)。
(由 Junio C Hamano -- gitster
-- in commit 11da0a5 合并,2022 年 3 月 6 日)
stash
: strip "refs/heads/" withskip_prefix
Reported-by: Kraymer
Reported-by: Daniel Hahler
Helped-by: Jeff King
Signed-off-by: Glen Choo
When generating a message for a stash, "
git stash
"(man) only records the part of the branch name to the right of the last /".
e.g.
if HEAD is at "foo/bar/baz", "git stash
" generates a message prefixed withWIP on baz:
instead ofWIP on foo/bar/baz
:.Fix this by using
skip_prefix()
to skip "refs/heads/
" instead of looking for the last instance of "/
".