【发布时间】:2012-04-28 08:23:20
【问题描述】:
我有一个 Git 存储库。这个存储库有多个远程存储库(我认为)。如何获取属于所述存储库的远程存储库列表?
像git list --remotes 或类似的东西?
【问题讨论】:
标签: git
我有一个 Git 存储库。这个存储库有多个远程存储库(我认为)。如何获取属于所述存储库的远程存储库列表?
像git list --remotes 或类似的东西?
【问题讨论】:
标签: git
您可以使用命令git remote -v 获取任何已配置远程 URL 的列表。
这将为您提供以下内容:
base /home/***/htdocs/base (fetch)
base /home/***/htdocs/base (push)
origin git@bitbucket.org:*** (fetch)
origin git@bitbucket.org:*** (push)
【讨论】:
git remote -v 因为 -v 表示详细。 git remote 给出了一个简单的遥控器列表(在这种情况下是基础,原点)。 -v 选项包括每个遥控器的 fetch 和 push 操作的 url。
-v for "verbose" 实际上是更常见的选项。 git branch 也支持它。基本区别是短选项与长选项(本质上是单破折号与双破折号)也就是说,使用 remote 子命令支持 --list 是有意义的。如果你真的想要它,我会说提交一个功能请求。
如果您只需要远程存储库的名称(而不需要任何其他数据),一个简单的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如果您与两个或更多人合作处理同一个项目并直接访问彼此的存储库而不是通过源传递所有内容,那么这将非常方便。
【讨论】:
ls 并根据需要克隆随机 repo 通常是不是一个健康的使用场景,似乎.就像 git repo 和托管它的服务器的严重错误配置一样。这不适用于公司环境(或安全措施很少的小型商店)。
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 ls-remote 应该显示所有可从上游服务器(git-scm.com/docs/git-ls-remote)获取的远程。我相信这个页面上的所有答案只告诉你如何列出你已经获取的遥控器和跟踪分支,这是一个 Catch-22。在您知道如何在上游服务器上引用它之前,您无法获取远程。
这些方法都不能像提问者所要求的那样起作用,而我也经常需要这种方法。例如:
$ 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的问题。不过还是不错的。
【讨论】: