我有一个 Git 存储库。这个存储库有多个远程存储库(我认为)。如何获取属于所述存储库的远程存储库列表?
像git list --remotes
或类似的东西?
您可以使用命令获取任何已配置远程 URL 的列表git remote -v
。
这将为您提供以下内容:
base /home/***/htdocs/base (fetch)
base /home/***/htdocs/base (push)
origin git@bitbucket.org:*** (fetch)
origin git@bitbucket.org:*** (push)
如果您只需要远程存储库的名称(而不需要任何其他数据),那么简单git remote
就足够了。
$ git remote
iqandreas
octopress
origin
到目前为止的答案告诉你如何找到现有的分支:
git branch -r
或同一项目的存储库[见下面的注释]:
git remote -v
还有另一种情况。您可能想了解托管在同一服务器上的其他项目存储库。
为了发现这些信息,我使用 SSH 或PuTTY登录到主机并ls
查找包含其他存储库的目录。例如,如果我通过键入以下内容克隆了一个存储库:
git clone ssh://git.mycompany.com/git/ABCProject
并且想知道还有什么可用的,我通过 SSH 或 PuTTY 登录 git.mycompany.com 并输入:
ls /git
假设ls
说:
ABCProject DEFProject
我可以使用命令
git clone ssh://git.mycompany.com/git/DEFProject
以访问其他项目。
注意:通常
git remote
只是简单地告诉我origin
——我从中克隆项目的存储库。git remote
如果您与两个或多个从事同一项目的人合作并直接访问彼此的存储库而不是通过源传递所有内容,这将很方便。
FWIW,我有完全相同的问题,但我在这里找不到答案。它可能不是便携式的,但至少对于 gitolite,我可以运行以下命令来获得我想要的:
$ ssh git@git.xxx.com info
hello akim, this is gitolite 2.3-1 (Debian) running on git 1.7.10.4
the gitolite config gives you the following access:
R W android
R W bistro
R W checkpn
...
查看远程分支的一种简单方法是:
git branch -r
查看本地分支:
git branch -l
这些方法都不能像提问者要求的那样起作用,而我也经常需要这种方法。例如:
$ git remote
fatal: Not a git repository (or any of the parent directories): .git
$ git remote user@bserver
fatal: Not a git repository (or any of the parent directories): .git
$ git remote user@server:/home/user
fatal: Not a git repository (or any of the parent directories): .git
$ git ls-remote
fatal: No remote configured to list refs from.
$ git ls-remote user@server:/home/user
fatal: '/home/user' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
这样做的全部意义在于,除了远程用户和服务器之外,您没有任何信息,并且想要找出您可以访问的内容。
大多数答案都假设您是从 git 工作集中进行查询的。提问者假设你不是。
作为一个实际示例,假设服务器上有一个存储库 foo.git。有智慧的人决定需要将其更改为 foo2.git。在服务器上做一个 git 目录的列表真的很好。是的,我看到了 git 的问题。尽管如此,它仍然会很好。