使用ruby-git gem查找所有回购分支,而无需克隆整个回购

时间:2019-05-01 15:43:34

标签: ruby git branch

我希望检查给定存储库中存在哪些分支。我知道如何使用ruby-git gem克隆完整的存储库:

Git.clone("https://user@bitbucket.org/my_repo.git", "my_repo", :path => "/my/repos")

g = Git.open("/my/repos/my_repo")

g.branches.each do |branch|
  puts branch.name
end

但是,如果我的目标只是简单地检查出存在哪些分支,那么克隆完整的存储库是错误的。难道没有办法只克隆元数据吗?

1 个答案:

答案 0 :(得分:1)

git ls-remote --heads https://user@bitbucket.org/my_repo.git打印远程存储库中的所有分支,而不克隆存储库。请注意,出于安全考虑,远程存储库可能会拒绝git ls-remote

ruby-git gem上有一个示例,

Git.ls_remote('https://github.com/ruby-git/ruby-git.git') # returns a hash containing the available references of the repo.

因此您可以尝试

Git.ls_remote('https://user@bitbucket.org/my_repo.git')

如果Git.ls_remote不支持--heads,则需要以refs/heads/开头的引用。