我有一个叫做“git-export”的脚本可以帮助我导出远程仓库,使用方法如下:
git-export http://host.com/git-repo <-t tag or -b branch or -c commit> /local/dir
之前它被用于导出本地仓库,我使用了以下命令:
从分支获取提交记录:
git branch -v --no-abbrev|awk '($1=="'$BRANCH'") || ($1 == "*" && $2 == "'$BRANCH'"){if($1 == "*"){print $3;}else{print $2;}}'
或者
git rev-parse -q --verify $BRANCH^{commit}
通过标签获取提交记录:
git rev-parse -q --verify $TAG^{commit}
我有一些脚本可以列出标签、版本(以v开头的标签),我使用git branch -v来显示分支... 问题是:如何在没有本地副本的情况下在远程存储库上执行这些操作。是否有一种通用的查询远程存储库的方法。例如:
git --remote=http://host.com/repo branch -v
或git --remote=http://host.com/repo log
原因:如果我想在远程主机上安装软件,我只想要:
1.列出版本、分支等
2.导出特定的版本/分支/提交,并显示提交的SHA1,无论导出哪个(通过导出我的意思是git archive --remote=<repo>|tar x
)
编辑:
我不想在远程实际运行命令。我想使用本地命令使用远程存储库并格式化显示。
for-each-ref
和--format
来做到这一点。请参见man git-for-each-ref
。 - NickSoftgit ls-remote <url> refs/tags/*^{}
,否则我认为您将不得不阅读列表并进行一些后处理。(当然,请注意,您仍然可以使用带注释的标记的SHA1进行git archive
,因此您也可以使用grep -v '\^{}$'
剥离所有指向提交的内容,并完成它。) - Cascabel