gpt4 book ai didi

git - 如何在 git 的历史记录中找到所有包含提交的引用

转载 作者:太空狗 更新时间:2023-10-29 13:28:44 26 4
gpt4 key购买 nike

假设你在 git 中有以下结构

    A <-- refs/heads/somebranch
|
B
| \
C D <-- refs/tags/TAG1
| |
E F
| | \
G H I <-- refs/heads/branch1
|
J <-- refs/heads/master

现在我想找到所有包含提交 B 的引用在他们的历史上。

如果我能做到就好了

$ git refs --contains B
refs/tags/TAG1
refs/heads/branch1
refs/heads/master

我查看了 git 文档并找到了 git branch -a --contains <commit_id>其中列出了包含 commit_id 的所有分支.

$ git branch -a --contains 4af9822
master
remotes/origin/someBranch
...

然后我找到了命令 git tag --contains 9338f2d

$ git tag --contains 9338f2d
someTag
anotherTag
...

我当然可以这样做,

$ git branch -a --contains 4af9822 && git tag --contains 9338f2d

但是是否有一个命令可以一次打印所有 refs?

最佳答案

为了补充 torek 的答案,git 2.7(2015 年第 4 季度)将提供更完整的 git for-each-ref 版本,现在支持 --contains

git for-each-ref --contains <SHA1>

参见 commit 4a71109commit ee2bd06commit f266c91commit 9d306b5commit 7c32834commit 35257aacommit 5afcb90commit d325406commit 6841104commit b2172fdcommit b2172fd、...、commit b2172fd(2015 年 7 月 7 日)和 commit af83baf(2015 年 7 月 9 日)作者 Karthik Nayak ( KarthikNayak )
(由 Junio C Hamano -- gitster -- merge 到 commit 9958dd8 ,2015 年 10 月 5 日)

Some features from "git tag -l" and "git branch -l" have been made available to "git for-each-ref" so that eventually the unified implementation can be shared across all three, in a follow-up series or two.

* kn/for-each-tag-branch:
for-each-ref: add '--contains' option
ref-filter: implement '--contains' option
parse-options.h: add macros for '--contains' option
parse-option: rename parse_opt_with_commit()
for-each-ref: add '--merged' and '--no-merged' options
ref-filter: implement '--merged' and '--no-merged' options
ref-filter: add parse_opt_merge_filter()
for-each-ref: add '--points-at' option
ref-filter: implement '--points-at' option

请注意,从 Git 2.13(2017 年第 2 季度)开始,终于支持 git for-each-ref --no-contains <SHA1>!

参见 commit 7505769commit 783b829commit ac3f5a3commit 1e0c3b6commit 6a33814commit c485b24commit eab98eecommit bf74804(2017 年 3 月 24 日)、commit 7ac04f1commit 682b29fcommit 4612edccommit b643827(2017 年 3 月 23 日)和 commit 17d6c74commit 8881d35commit b084060commit 0488792(2 月 23 日、1 月 2 日) ) 作者:Ævar Arnfjörð Bjarmason ( avar )
(由 Junio C Hamano -- gitster -- merge 到 commit d1d3d46 ,2017 年 4 月 11 日)

关于git - 如何在 git 的历史记录中找到所有包含提交的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24993772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com