ローカルGitリポジトリのクローン元のURLを確認するにはどうすればよいですか?


4094

数日前にGitHubからプロジェクトをプルしました。それ以来、GitHubにいくつかのフォークがあることを発見しました。最初にどちらを使用したかを書き忘れていました。どのフォークを引っ張ったかをどのように判断できますか?


163
git 2.7(2015年第4四半期)では、git remote get-url origin可能になります。以下の私の回答を
VonC、2015年


21
git remote get-url origin私にはうまくいきません-おそらく非推奨ですか?git remote show originでも働いた。
Klik

47
git remote -vこれを含む多くの情報を提供します。
するThorbjörnRavnアンデルセン

git remote get-url origin --push正常に機能し、明らかに減価償却は行われず、簡潔な情報(非常に冗長にgit remote show originなる可能性があります)qvを提供します。git help remote
NeilG

回答:


5760

リモートURLのみが必要な場合、またはリモートリポジトリに到達できるネットワークに接続していない場合:

git config --get remote.origin.url

あなたは完全な出力を必要としますが場合はあるの起源はどこにあるリモートリポジトリに到達することができ、ネットワーク上:

git remote show origin

使用している場合git clone(GitHubの、またはそのことについては、ソースリポジトリから)クローンのソースのデフォルト名は「起源」です。を使用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:

スクリプトで値を使用する場合は、この回答にリストされている最初のコマンドを使用します。


2
amazon-s3でjgitを使用する場合は、代わりに以下で説明するgit configを使用してください。
barryku 2012年

6
元の質問の目的には関係ありませんが、「プッシュURL」を取得しようとして、指定されたリモートに複数のURLが入力された場合は、使用する必要がありますgit remote show origin(オプションで@によって提供される-nフラグを使用) Casey)、またはgit remote -v@Montaroと@rodelによって提案されたとおり。
Amazingant 2014

これはどのファイルに書き込まれますか?.gitconfigファイルにはあると思いましたが、私の中にはありませんでした。
ayjay

1
@ayjay ´~/.gitconfigはすべてのgitリポジトリに対してグローバルです。これは、通常はそこにあるローカル構成に由来します.git/config(ただし、git-サブモジュールの場合、答えは少し難しいです)。それstrace git config --get remote.origin.urlはあなたの友達です。
Tino

1
ただし、元のURLは、現在使用されているリモートのURLである必要はありません。実際に使用されたURLを表示するには、このソリューションが必要になります。stackoverflow.com/a/40630957/1069083
rubo77

620

スクリプトの目的でこれが必要な場合は、

git config --get remote.origin.url

38
これが正解です。リモートURLが利用できなくなった場合でも、git remote show originはるかに高速で機能します(「conq:リポジトリが存在しません」と表示されるだけです)。
apfelbox 2013年

5
configオプションのため、これは正解ではありませんurl.<base>.insteadOf。私の答えを見てください-gitにはこの目的のためのコマンドがあります。
Carl Suster 2013年

2
@arcresuクール、+ 1してください!私の守備では、そのコマンドは、2011年3月までは添加しなかった、そしてそれは2012年9月まで記載されていなかった
カスカベル

1
@Catskulのみ--git-dirが関連し(構成は作業ツリーの場所に関係なくgit dirにあります)、私にとっては機能します。親ディレクトリではなく、実際の.gitディレクトリへのパスを指定しましたか?
Cascabel 2014年

553

あなたが試すことができます:

git remote -v

すべてのリモートのフェッチ/プッシュURLを出力します。


255

答えを得るには:

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

これは構成を読み取るよりも優れています。次のマニュアルページをgit-ls-remote参照してください

--get-url

構成"url.<base>.insteadOf"設定(を参照git-config(1))を考慮して、指定されたリモートリポジトリのURLを展開し、リモートと通信せずに終了します。

@Jefromiで指摘したように、このオプションは、で追加されましたv1.7.5とまでは文書化されていませんv1.7.12.2(2012〜09)。


2
良いもの:これも以前のバージョンと同じです> git remote -v | grep fetch | awk '{print $ 2}'
ravi.zombie

1
他の回答のほとんどは、gitコマンドに関する説明とgit履歴に関する説明のほうが多いと思います。これは、アップストリームが呼び出されてoriginいることを前提としない唯一の回答です。
マイクD

これは、古いremote get-urlオプションの最も直接的な代替品です。それはドロップイン交換です。
Klaatu von Schlacker

111

Git 2.7(2015年1月5日リリース)では、以下を使用したより一貫したソリューションがありますgit remote

git remote get-url origin

(の素敵なペンダントgit remote set-url origin <newurl>

Ben Boeckel()によるcommit 96f78d3(2015年9月16日)を参照してください。(によって合併- Junio C浜野-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]

4
5年後、多くのことが変化し、これが今では受け入れられる答えになるはずです。しかし、おそらく2.7より前の構文も追加します。
msp

58

要約すると、少なくとも4つの方法があります。

(以下は公式の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)

4
注:またはwhileでgit config --get remote.origin.url設定された元のURLを取得しますが、リモートへのアクセスに実際に使用されるURLを取得します。 したがって、両方の出力が異なる場合があります。 また、(なしで)は必ずしもを取得するのではなく、追跡されたアップストリームを表示するため、たとえばデタッチされたHEAD状態では失敗します。git remote add ...git remote set-url ...git ls-remote --get-url origingit config --global url.XXX.insteadOf YYYgit ls-remote --get-urloriginorigin
Tino

24

私はあなたがそれを下に見つけることができると思います.git/config、そしてremote["origin"]あなたがそれを操作しなかったなら。


22

簡潔な答え:

$ 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すると、リモートヘッド(別名ブランチ)はフェッチされません。そのような情報は必要ありませんよね?

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

| grep -i fetch3つのバージョンすべてに適用して、フェッチURLのみを表示できます。

純粋な速度が必要な場合は、次を使用します。

$ git config --get remote.origin.url

それを指摘してくれた@Jefromiに感謝します。


22

私にとっては、これはより簡単な方法です(タイピングを減らす):

$ 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'


17

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


これ大好き!
アルフィー

15

Git URLはGit構成ファイル内にあります。値はキーに対応しますurl

MacおよびLinuxの場合、以下のコマンドを使用します。

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

Windowsの場合、以下のファイルをテキストエディタで開き、keyの値を見つけますurl

project_dir/.git/config

注:これは、オフラインになっている場合やリモートgitサーバーがダウンしている場合でも機能します。


1
元のチェックアウトをホストしていたリモートサーバーが停止すると、これがうまくいきました。他のすべての試行は失敗しました:git remote get-url origin >> fatal: No such remote 'origin'git config --get remote.origin.url >>
jxramos

14

私は基本的に使用します:

git remote get-url origin

WindowsのGit BashコマンドコンソールまたはCMDコマンドコンソールで機能します。つまり、Gitのバージョン2.xで動作します。



10

アップストリームのリモートは「オリジン」と呼ばれない場合があるため、ここにバリエーションを示します。

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

9

の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 ":"

4
以下のためsshの不存在下でのみ動作~/.ssh/configホスト名または別名を書き換えます。
Tino

9

他の回答を補足するには:何らかの理由でリモートが変更され、元の原点が反映されない場合、reflogの最初のエントリ(つまり、コマンドによって表示される最後のエントリgit reflog)は、リポジトリが最初にクローンされた場所を示す必要がありますから。

例えば

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

(reflogが削除される可能性があるため、これが機能するとは限りません)。


1
これが変更された場合、「オリジナルの」リモートを取得する唯一の実際の方法です。
ジャスティンオームズ2016

8

ではgit remote show origin、あなたのプロジェクトディレクトリにある必要があります。ただし、他の場所からURLを特定する場合は、次のように使用できます。

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

このコマンドが頻繁に必要になる場合は、.bashrcまたは.bash_profileMacOSでエイリアスを定義できます。

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

したがってgiturl、単にURLを取得するには、Gitルートフォルダーを呼び出すだけです。


このエイリアスをこのように拡張すると

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

あなたは前のものなしでプレーンURLのみを取得します

「url =」

url = http://example.com/repo.git

あなたはその使用法でより多くの可能性を得ます:

Mac open $(giturl)では、標準ブラウザでURLを開くために呼び出すことができます。

またはchrome $(giturl)、LinuxのChromeブラウザで開きます。



7

任意の名前のリモートフェッチURLを出力します。

git remote -v | grep fetch | awk '{print $2}'

6

ブランチのアップストリームリモートの名前がわからない場合は、現在のブランチが構築されているアップストリームブランチ名を調べることで、最初にその名前を調べることができます。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)

これは、クローン元のリモートリポジトリとは必ずしも同じではないことに注意してください。しかし多くの場合それで十分でしょう。


5
#!/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

5

覚えやすいので、こちらをお勧めします。

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

1

.gitフォルダを置いた場所でこのコマンドを使用するだけです

git config --get remote.origin.url

ネットワークに接続している場合

git remote show origin

ローカルGitリポジトリのクローン元のURLが表示されます。

この助けを願っています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.