git - 如何使用 BLOB SHA1 查找提交消息
问题描述
我是GIT的初学者,正在尝试使用Bit Bucket对象进行一些验证。
我正在使用以下脚本来查找分支中的所有对象:
git ls-tree -r branch-name
这给了我对象名称以及 blob SHA1 信息。我想从 blob 中找到提交消息。我们在提交消息中使用jira编号,我想从消息中提取jira编号。
问题是该文件被多次提交以解决其他对象的合并冲突,因此当我尝试commitID
从SHA1查找时,它给了我最新的commitID
,这是错误的,因为jira与特定对象没有关联。
如果我在远程仓库中看到对象,我仍然可以看到正确的提交消息(jira-no),因此我想从目标分支中检索对象和相应的提交消息。请建议是否有办法这样做。
另一个查询是解决合并冲突的方法。如果与一个对象发生冲突,我们一般会拉取目标分支的全部内容,然后解决冲突的对象。因此,未修改的对象也会再次提交。仅拉出冲突对象的任何简单方法。
谢谢你的帮助
解决方案
嗯......问题是一个单一的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。应该这样做。
推荐阅读
- c# - c#如何在保留图像类型的同时将任何图像的大小调整为特定的千字节
- c# - 如何在 EF Core 的 SELECT 中映射数据库生成的列?
- python - Collatz 序列 - 尝试修复打印的“无”值
- sorting - 您将如何决定在快速排序中将哪个元素用作枢轴?
- arrays - 如何从散列中制作散列数组?
- r - R - 重新塑造数据框
- matlab - MATLAB 从不包含在另一个时间表中的时间表中删除观察结果
- sql - 在下一列定义中使用使用“AS”子句命名的列
- react-native - 仅以编程方式覆盖和控制 goBack
- javascript - 如何获取输入的值并在javascript和html中加上任意数字?