gpt4 book ai didi

git - 如何获取 git SHA 的关联引用路径?

转载 作者:太空狗 更新时间:2023-10-29 14:34:52 25 4
gpt4 key购买 nike

我希望能够将任何东西传递给 git 命令(也许它是 SHA,也许它只是像“origin/master”或“devel/epxerimental”等东西)并且 git 告诉我分支的引用路径过去的东西存在于其中,例如

<git_command> 0dc27819b8e9 => output: refs/heads/master
<git_command> xyz/test => output: refs/remotes/xyz/master
...

我一直在看 git showgit loggit rev-parse 除了 --pretty= format:%d 我找不到任何东西。(--pretty=format:%d 输出很奇怪,有很多可用空间和空行,有时一行上有多个引用路径聚集在一起)。

必须有更好的方法吗?

感谢阅读。

安德烈

最佳答案

没有固定的信息可以记录这样的数据,因为 SHA1 并不总是与引用路径相关联。
分支可以移动、重命名或删除,而 SHA1 仍将被存储(除非它没有被任何引用模式引用,它最终将被修剪)

话虽这么说:

git show-ref |grep yourSHA1|awk "{print $2}"
git show-ref --heads --tags -d |grep yourSHA1|awk "{print $2}"

非常接近你想要的:

C:\Prog\Git\tests\rep\main5>git show-ref | grep f4a071 | awk "{print $2}"
refs/heads/master
refs/remotes/origin/HEAD
refs/remotes/origin/master

git show-ref 有很多选项可用并将允许您:

  • 显示也解引用 SHA1
  • 仅针对引用模式显示 SHA1

OP 添加:

it will return nothing at all if a SHA passed does not reference a head or any other dereferencable commit?
Do you have an idea how we could do the intermediary step of figuring out the SHA of the most recent commit belonging to the same branch as the SHA passed?

另一个有用的管道命令是 git name-rev :

C:\Prog\Git\tests\rep\main5>git name-rev a7768453
a7768453 patches~1

C:\Prog\Git\tests\rep\main5>git name-rev a7768453|gawk "{gsub(/~.*/,\"\",$2);print $2}
patches

作为Jefromi在评论中提到,陶瓷命令将是 git branch --contain :

C:\Prog\Git\tests\rep\main5>git branch --contain 1e73e369
master
* patches
tmp

--contains <commit>

Only list branches which contain the specified commit.
It is used to find all branches which will need special attention if <commit> were to be rebased or amended, since those branches contain the specified <commit>.

关于git - 如何获取 git SHA 的关联引用路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2532350/

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