给定SHA-1哈希值,是否有方法确定提交来自哪个分支?
如果你能告诉我如何使用Ruby Grit实现这一点,那就加分。
给定SHA-1哈希值,是否有方法确定提交来自哪个分支?
如果你能告诉我如何使用Ruby Grit实现这一点,那就加分。
当前回答
除了在所有树中搜索直到找到匹配的哈希值之外,没有。
其他回答
简单的答案是Git不存储提交的分支的名称。试图重建这些信息的技巧似乎在所有情况下都不起作用。
一个穷人的选择是在HEAD上使用工具tig1,搜索提交,然后直观地从提交开始一直到看到合并提交。默认合并消息应指定要合并到的分支位置:)
1Tig是一个基于ncurses的Git文本模式界面。它的功能主要作为Git存储库浏览器,但它也可以帮助更改块级别的提交,并充当各种Git命令。
除了在所有树中搜索直到找到匹配的哈希值之外,没有。
我认为有人应该面临同样的问题,无法找到分支,尽管它实际上存在于一个分支中。
你最好先把所有东西都拔出来:
git pull --all
然后执行分支搜索:
git name-rev <SHA>
or:
git branch --contains <SHA>
gitcheckout<SHA>->将使您进入分离的HEAD状态。
git rev parse--abbrev ref HEAD->将打印HEAD,因此此命令在这种状态下不起作用。
现在我们处于分离HEAD状态,可以使用以下命令获取分支名称。PS:如果您没有处于分离的HEAD状态,这将不起作用!
git branch -a --contains HEAD | sed -n 2p | awk '{ printf $1 }'
瞧!现在您有了分支名称。