首页 > 解决方案 > 如何使用 BLOB SHA1 查找提交消息

问题描述

我是GIT的初学者,正在尝试使用Bit Bucket对象进行一些验证。

我正在使用以下脚本来查找分支中的所有对象: git ls-tree -r branch-name

这给了我对象名称以及 blob SHA1 信息。我想从 blob 中找到提交消息。我们在提交消息中使用jira编号,我想从消息中提取jira编号。

问题是该文件被多次提交以解决其他对象的合并冲突,因此当我尝试commitIDSHA1查找时,它给了我最新的commitID,这是错误的,因为jira与特定对象没有关联。

如果我在远程仓库中看到对象,我仍然可以看到正确的提交消息(jira-no),因此我想从目标分支中检索对象和相应的提交消息。请建议是否有办法这样做。

另一个查询是解决合并冲突的方法。如果与一个对象发生冲突,我们一般会拉取目标分支的全部内容,然后解决冲突的对象。因此,未修改的对象也会再次提交。仅拉出冲突对象的任何简单方法。

谢谢你的帮助

标签: gitgithubgit-commitsha

解决方案


嗯......问题是一个单一的blob可能存在于许多修订中......但你可以尝试使用伪1-liner:

git log --all --pretty=%h | while read revision; do
    lines=$( git ls-tree -r $revision | grep object-id | wc -l )
    if [ $lines -gt 0 ]; then
        # it's present here
        git show --summary --pretty="%h %s" $revision
    fi
done

替换object-id为您想要的 blob id。应该这样做。


推荐阅读