4830

几天前我从 GitHub 上拉了一个项目。从那以后我发现 GitHub 上有几个 fork,而我忽略了我最初使用的是哪一个。我如何确定我拉了哪些叉子?

4

26 回答 26

6756

如果您只需要远程 URL,或者您没有连接到可以访问远程存储库的网络:

git config --get remote.origin.url

如果您需要完整输出并且您所在的网络可以访问源所在的远程存储库:

git remote show origin

使用git clone(来自 GitHub 或任何源存储库)时,克隆源的默认名称是“origin”。使用git remote show将显示有关此远程名称的信息。前几行应显示:

C:\Users\jaredpar\VsVim> git remote show origin
* remote origin
  Fetch URL: git@github.com:jaredpar/VsVim.git
  Push  URL: git@github.com:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

如果您想在脚本中使用该值,您将使用此答案中列出的第一个命令。

于 2010-11-03T16:50:16.040 回答
687

如果您希望将此用于脚本目的,您只能获取 URL

git config --get remote.origin.url
于 2010-11-03T19:35:43.757 回答
658

你可以试试:

git remote -v

它将打印所有遥控器的获取/推送 URL。

于 2012-01-29T12:01:29.257 回答
295

To get the answer:

git ls-remote --get-url [REMOTE]

This is better than reading the configuration; refer to the man page for git-ls-remote:

--get-url

Expand the URL of the given remote repository taking into account any "url.<base>.insteadOf" config setting (See git-config(1)) and exit without talking to the remote.

As pointed out by @Jefromi, this option was added in v1.7.5 and not documented until v1.7.12.2 (2012-09).

于 2013-06-02T05:15:59.510 回答
142

使用 Git 2.7(2015 年 1 月 5 日发布),您有一个更连贯的解决方案,使用git remote

git remote get-url origin

(漂亮的吊坠git remote set-url origin <newurl>

请参阅Ben Boeckel ( ) 的提交 96f78d3(2015 年 9 月 16 日(由Junio C Hamano 合并——提交 e437cbd中,2015 年 10 月 5 日)mathstuf
gitster

远程:添加 get-url 子命令

扩展insteadOf是其中的一部分,ls-remote --url也没有办法扩展pushInsteadOf
添加一个get-url子命令,以便能够同时查询以及获取所有已配置 URL 的方法。

get-url:

检索远程的 URL。和的
配置在这里展开。 默认情况下,仅列出第一个 URL。insteadOfpushInsteadOf

  • 使用 ' --push',查询推送 URL 而不是获取 URL。
  • 使用“ --all”,将列出远程的所有 URL。

在 git 2.7 之前,你有:

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]
于 2015-10-07T12:07:58.980 回答
107

总结起来,至少有四种方式:

使用官方 Linux 存储库进行尝试:

最少信息:

$ git config --get remote.origin.url
https://github.com/torvalds/linux.git

$ git ls-remote --get-url
https://github.com/torvalds/linux.git

更多信息:

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

更多信息:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/torvalds/linux.git
  Push  URL: https://github.com/torvalds/linux.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)
于 2014-05-15T15:28:53.670 回答
29

我想你可以在下面找到它.git/configremote["origin"]如果你没有操纵它。

于 2010-11-03T16:50:48.537 回答
26

对我来说,这是更简单的方法(少打字):

$ git remote -v
origin    https://github.com/torvalds/linux.git (fetch)
origin    https://github.com/torvalds/linux.git (push)

实际上,我已经把它变成了一个alias被调用s的对象:

git remote -v
git status

您可以添加到您的个人资料: alias s='git remote -v && git status'

于 2019-02-11T18:39:37.677 回答
25

简短的回答:

$ git remote show -n origin

或者,纯快速脚本的替代方案:

$ git config --get remote.origin.url

一些信息:

  1. $ git remote -v将打印所有遥控器(不是您想要的)。你想要起源对吗?
  2. $ git remote show origin好多了,只显示origin但时间太长(在 git 版本 1.8.1.msysgit.1 上测试)。

我最终得到:$ git remote show -n origin,这似乎是最快的。使用-n它不会获取远程头(AKA 分支)。你不需要那种类型的信息,对吧?

http://www.kernel.org/pub//software/scm/git/docs/git-remote.html

您可以应用| grep -i fetch到所有三个版本以仅显示提取 URL。

如果您需要纯速度,请使用:

$ git config --get remote.origin.url

感谢@Jefromi指出这一点。

于 2013-02-27T18:11:45.503 回答
20

我永远记不住 Git 命令的所有参数,所以我只是在~/.gitconfig文件中放了一个对我来说更有意义的别名,这样我就可以记住它,这样可以减少输入:

[alias]
url = ls-remote --get-url

重新加载终端后,您只需键入:

> git url

这里还有一些我经常使用的:

[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags

我还强烈推荐git-extras,它有一个git info 命令,可以提供有关远程和本地分支的更详细信息。

于 2018-01-14T19:57:01.020 回答
19

我更喜欢这个,因为它更容易记住:

git config -l

它将列出所有有用的信息,例如:

user.name=Your Name
user.email=your.name@notexisting.com
core.autocrlf=input
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://github.com/mapstruct/mapstruct-examples
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
于 2020-02-12T09:55:10.833 回答
17

Git URL 将位于 Git 配置文件中。value 对应于 key url

对于 Mac 和 Linux,请使用以下命令:

 cd project_dir
 cat .git/config | grep url | awk '{print $3}'

对于 Windows,在任何文本编辑器中打开以下文件并找到 key 的值url

project_dir/.git/config

注意:即使您处于离线状态或远程 git 服务器已关闭,这也将起作用。

于 2017-09-21T10:50:05.557 回答
16

我基本上使用:

git remote get-url origin

它适用于 Windows 中的 Git Bash 命令控制台或 CMD 命令控制台。也就是说,它适用于 Git 2.x 版本。

于 2017-10-10T19:16:23.223 回答
13
git config --list

此命令将提供与您的存储库相关的所有信息。

于 2019-05-28T07:20:08.417 回答
12

上游的远程可能不被称为“起源”,所以这里有一个变体:

remote=$(git config --get branch.master.remote)
url=$(git config --get remote.$remote.url)
basename=$(basename "$url" .git)
echo $basename

或者:

basename $(git config --get remote.$(git config --get branch.master.remote).url) .git

对于更有用的变量,有:

$ git config -l
于 2013-04-19T20:49:45.577 回答
11

一个简单的方法是打开.git/config文件:

cat .git/config

编辑:

vim .git/config或者

nano .git/config

于 2017-02-01T11:05:57.843 回答
10

获取 IP 地址/主机名origin

对于ssh://存储库:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d "/"

对于git://存储库:

git ls-remote --get-url origin | cut -f 2 -d @ | cut -f 1 -d ":"
于 2014-06-24T20:54:22.383 回答
10

补充其他答案:如果遥控器由于某种原因已更改,因此不反映原始来源,则 reflog 中的第一个条目(即 command 显示的最后一个条目git reflog)应指示 repo 最初克隆的位置从。

例如

$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$

(请记住,reflog 可能会被清除,所以这不能保证有效。)

于 2015-11-16T12:58:41.837 回答
10

您使用 SSH 克隆克隆了您的存储库。

git config --get remote.origin.url
git@gitlab.com:company/product/production.git

但是您想获取 http url 以在浏览器中打开它或共享它:

git config --get remote.origin.url | sed -e 's/:/\//g'| sed -e 's/ssh\/\/\///g'| sed -e 's/git@/https:\/\//g'

https://gitlab.com/company/product/production.git

GitHub 或 GitLab 无关紧要。

于 2020-09-15T18:27:55.310 回答
10

git remote show origin你必须在项目目录中。但是,如果您想从其他任何地方确定 URL,您可以使用:

cat <path2project>/.git/config | grep url

如果你经常需要这个命令,你可以在你的.bashrc.bash_profileMacOS 中定义一个别名。

alias giturl='cat ./.git/config | grep url'

因此,您只需调用giturlGit 根文件夹即可轻松获取其 URL。


如果你像这样扩展这个别名

alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'

你只得到没有前面的纯 URL

“网址=”

网址= http://example.com/repo.git

您在其使用中获得更多可能性:

例子

在 Mac 上,您可以调用open $(giturl)以在标准浏览器中打开 URL。

或者chrome $(giturl)在 Linux 上用 Chrome 浏览器打开它。

于 2015-11-21T08:41:13.310 回答
8

打印任意命名的远程获取 URL:

git remote -v | grep fetch | awk '{print $2}'
于 2013-01-20T23:51:59.127 回答
7

如果您不知道某个分支的上游远程名称,您可以首先通过检查当前分支所基于的上游分支名称来查找它。像这样使用git rev-parse

git rev-parse --symbolic-full-name --abbrev-ref @{upstream}

这表明上游分支是当前分支的源。可以对其进行解析以获取远程名称,如下所示:

git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1

现在将其通过管道传输到git ls-remote,您将获得作为当前分支源的上游远程的 URL:

git ls-remote --get-url \
  $(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} | cut -d / -f 1)

现在应该注意,这不一定与克隆的源远程存储库相同。然而,在许多情况下,这就足够了。

于 2017-08-09T00:38:04.250 回答
6

要仅获取远程 URL:

git config --get remote.origin.url

要获取有关特定遥控器的更多详细信息,请使用

git remote show [remote-name] command

查看远程 URL

git remote show origin

查看您放置 .git 文件夹的位置

git config --get remote.origin.url
于 2021-03-20T18:51:34.330 回答
6
#!/bin/bash

git-remote-url() {
 local rmt=$1; shift || { printf "Usage: git-remote-url [REMOTE]\n" >&2; return 1; }
 local url

 if ! git config --get remote.${rmt}.url &>/dev/null; then
  printf "%s\n" "Error: not a valid remote name" && return 1
  # Verify remote using 'git remote -v' command
 fi

 url=`git config --get remote.${rmt}.url`

 # Parse remote if local clone used SSH checkout
 [[ "$url" == git@* ]] \
 && { url="https://github.com/${url##*:}" >&2; }; \
 { url="${url%%.git}" >&2; };

 printf "%s\n" "$url"
}

用法:

# Either launch a new terminal and copy `git-remote-url` into the current shell process, 
# or create a shell script and add it to the PATH to enable command invocation with bash.

# Create a local clone of your repo with SSH, or HTTPS
git clone git@github.com:your-username/your-repository.git
cd your-repository

git-remote-url origin

输出:

https://github.com/your-username/your-repository
于 2018-01-03T03:35:15.827 回答
3

很简单,只需在放置 .git 文件夹的位置使用此命令

git config --get remote.origin.url

如果您已连接到网络

git remote show origin

它将向您显示最初克隆本地 Git 存储库的 URL。

希望这有帮助

于 2020-01-14T10:47:52.540 回答
2
alias git-repo="git config --get remote.origin.url | sed -e 's/:/\//g'| sed -e 's/ssh\/\/\///g'| sed -e 's/git@/https:\/\//g'"
alias git-pr="git config --get remote.origin.url | sed -e 's/:/\//g'| sed -e 's/ssh\/\/\///g'| sed -e 's/git@/https:\/\//g' | sed 's/....$//' | sed -ne 's/$/\/pulls &/p'"

将此表达式添加到主目录上的 .zshrc 或 .bashrcs

在你可以使用之后

git-repo
git-pr
于 2021-02-27T03:36:17.407 回答