web-dev-qa-db-ja.com

ローカルのGitリポジトリがもともとクローンされたURLをどのようにして確認できますか?

私は数日前にGitHubからプロジェクトを引っ張った。それ以来、GitHubにはいくつかのフォークがあることを発見しました。そして、どちらを最初に持っていたのかに注目するのを怠りました。どのフォークを引っ張ったのか、どうすれば判断できますか?

3340
Tim

リモート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: [email protected]:jaredpar/VsVim.git
  Push  URL: [email protected]:jaredpar/VsVim.git
  HEAD branch: master
  Remote branches:

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

4535
JaredPar

スクリプト目的でこれを使用する必要がある場合は、URLだけを使用して取得できます。

git config --get remote.Origin.url
540
Cascabel

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

git remote -v

それはあなたのすべてのリモコンの取得/プッシュURLを印刷します。

463
Montaro

答えを得るために:

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

これは設定を読むよりも優れています。 git-ls-remoteのmanページ を参照してください。

--get-url

任意の"url.<base>.insteadOf" config設定(git-config(1)を参照)を考慮に入れて与えられたリモートリポジトリのURLを展開し、リモートと会話せずに終了します。

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

216
Carl Suster

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

git remote get-url Origin

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

commit 96f78d3 (by 2015年9月16日) Ben Boeckel(mathstuf を参照してください。
にマージされたJunio C Hamano - gitster - in commit e437cbd 、2015年10月5日)

remote:get-urlサブコマンドを追加しました

insteadOfを展開することはls-remote --urlの一部であり、pushInsteadOfを展開する方法もありません。
get-urlサブコマンドを追加して、両方のクエリとすべての設定済みURLを取得する方法を可能にします。

get-url:

リモートのURLを取得します。
insteadOfpushInsteadOfの設定はここで拡張されます。
デフォルトでは、最初のURLだけが表示されます。

  • '--Push'を指定すると、プッシュURLはURLを取得するのではなく照会されます。
  • '--all'を指定すると、リモートのすべてのURLが一覧表示されます。

Git 2.7より前のバージョンでは、

 git config --get remote.[REMOTE].url
 git ls-remote --get-url [REMOTE]
 git remote show [REMOTE]
80
VonC

要約すると、少なくとも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)
48

短い答え:

$ git remote show -n Origin

あるいは、純粋なクイックスクリプトの代替手段です。

$ git config --get remote.Origin.url

いくつかの情報:

  1. $ git remote -vはすべてのリモートを印刷します(あなたが望むものではありません)。あなたはOriginを正しく欲しいですか
  2. $ git remote show OriginOriginのみを表示しますが、時間がかかります(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

3つのバージョンすべてに| grep -i fetchを適用して取得URLのみを表示できます。

純粋な速度が必要な場合は、次のものを使用してください。

$ git config --get remote.Origin.url

@Jefromi に感謝します。

19
Casey

それを操作しなければ、.git/configremote["Origin"]の下に見つけることができると思います。

16
meder omuraliev

GitのURLはGit設定ファイルの中にあります。値はキーurlに対応します。

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

注意:これはあなたがオフラインであっても、あるいはリモートgitサーバーが停止されていても機能します。

8
Harikrishnan

上流のリモコンは "Origin"とは呼ばれないかもしれないので、ここにバリエーションがあります。

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
8
cagney

Gitコマンドのすべてのパラメータを覚えておくことはできません。そのため、~/.gitconfigファイルにエイリアスを追加するだけで、意味がわかります。覚えておくと、入力が少なくなります。

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

端末をリロードした後は、次のように入力するだけです。

> git url

これが私がよく使うものです。

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

OriginのIPアドレス/ホスト名を取得する

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

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

git remote get-url Origin

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

git remote show Originでは、プロジェクトディレクトリにいなければなりません。しかし、あなたがどこか他の場所からURLを決定したいのならあなたは使うことができます:

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

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

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

そのため、単にそのURLを取得するには、Gitルートフォルダでgiturlを呼び出す必要があります。


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

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

あなたは前の部分なしでただのURLだけを手に入れる 

"url ="

に 

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

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

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

またはLinuxのChromeブラウザで開くにはchrome $(giturl)

6
Sedat Kilinc

他の答えを補完するには:何らかの理由でリモートが変更されていて、 original Originが反映されていない場合は、reflogの最初のエントリ(コマンドgit reflogで表示される最後のエントリ)でリポジトリはもともとから複製されたものです。

例えば.

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

(reflogは削除される可能性があるので、これが機能することは保証されていません。)

6
Jeremy

簡単な方法は.git/configファイルを開くことです。

cat .git/config

編集するには:

vim .git/configまたは

nano .git/config

6
Omar Makled

任意の名前のリモート取得URLを表示します。

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

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

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

4
Christopher
#!/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 [email protected]:your-username/your-repository.git
cd your-repository

git-remote-url Origin

出力:

https://github.com/your-username/your-repository
3
ecwpz91

私にとっては、これがより簡単な方法です(入力が少なくなります)。

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

1
Code Knox
git config --list

このコマンドはあなたのリポジトリに関する全ての情報を与えます。