我有一个由分支分开的配置文件的git repo,例如:
refs/heads/branch1, file - settings.properties
refs/heads/branch2, file - settings.properties
等等
我试图grep settings.properties每个存储库中每个文件的某些属性:
git for-each-ref refs/heads --shell --format=‘%(refname:short)’ | xargs -n1 git checkout | cat settings.properties | grep ‘host.name’ 第一个命令给我分支的列表,第二个命令一个接一个地检查我到每个分支,我希望第三个命令可以管理文件,第四个命令可以grep某些属性。前2个命令运行正常,但是如果我运行整个程序,则只对第一个分支使用host.name即可。
我显然缺少有关管道的一些重要信息。我知道我可以将其编写为shell脚本并循环执行所有这些操作,但是我想保留“管道”方法,因为我可能经常需要使用cat不同的文件和grep属性,并且不想处理传递参数放入脚本
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您无需检出每个分支即可获取有关该文件的信息。您可以改为使用git cat-file来在该分支上显示文件的内容。
因此,您可以执行以下操作(未经测试):
git for-each-ref refs/heads --shell --format='%(refname:short)' | \
xargs -n1 -I{} git cat-file blob {}:settings.properties | grep 'host.name'
或者,如果您希望它更短一些,则可以直接使用git grep:
git for-each-ref refs/heads --shell --format='%(refname:short)' | \
xargs -n1 -I{} git --no-pager grep host.name {}:settings.properties