私は数日前にGitHubからプロジェクトを引っ張った。それ以来、GitHubにはいくつかのフォークがあることを発見しました。そして、どちらを最初に持っていたのかに注目するのを怠りました。どのフォークを引っ張ったのか、どうすれば判断できますか?
リモート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:
スクリプトで値を使用したい場合は、この回答にリストされている最初のコマンドを使用します。
スクリプト目的でこれを使用する必要がある場合は、URLだけを使用して取得できます。
git config --get remote.Origin.url
あなたが試すことができます:
git remote -v
それはあなたのすべてのリモコンの取得/プッシュURLを印刷します。
答えを得るために:
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)まで文書化されていませんでした。
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を取得します。
insteadOf
とpushInsteadOf
の設定はここで拡張されます。
デフォルトでは、最初の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]
要約すると、少なくとも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)
短い答え:
$ git remote show -n Origin
あるいは、純粋なクイックスクリプトの代替手段です。
$ git config --get remote.Origin.url
いくつかの情報:
$ git remote -v
はすべてのリモートを印刷します(あなたが望むものではありません)。あなたはOriginを正しく欲しいですか$ 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
3つのバージョンすべてに| grep -i fetch
を適用して取得URLのみを表示できます。
純粋な速度が必要な場合は、次のものを使用してください。
$ git config --get remote.Origin.url
@Jefromi に感謝します。
それを操作しなければ、.git/config
とremote["Origin"]
の下に見つけることができると思います。
GitのURLはGit設定ファイルの中にあります。値はキーurl
に対応します。
cd project_dir
cat .git/config | grep url | awk '{print $3}'
注意:これはあなたがオフラインであっても、あるいはリモートgitサーバーが停止されていても機能します。
上流のリモコンは "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
Gitコマンドのすべてのパラメータを覚えておくことはできません。そのため、~/.gitconfig
ファイルにエイリアスを追加するだけで、意味がわかります。覚えておくと、入力が少なくなります。
[alias]
url = ls-remote --get-url
端末をリロードした後は、次のように入力するだけです。
> git url
これが私がよく使うものです。
[alias]
cd = checkout
ls = branch
lsr = branch --remote
lst = describe --tags
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 ":"
私は基本的に使用します:
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 ="
に
あなたはその使用法でより多くの可能性を得る:
例
Macでは、open $(giturl)
を呼び出して標準のブラウザでURLを開くことができます。
またはLinuxのChromeブラウザで開くにはchrome $(giturl)
。
他の答えを補完するには:何らかの理由でリモートが変更されていて、 original Originが反映されていない場合は、reflogの最初のエントリ(コマンドgit reflog
で表示される最後のエントリ)でリポジトリはもともとから複製されたものです。
例えば.
$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$
(reflogは削除される可能性があるので、これが機能することは保証されていません。)
簡単な方法は.git/config
ファイルを開くことです。
cat .git/config
編集するには:
vim .git/config
または
nano .git/config
任意の名前のリモート取得URLを表示します。
git remote -v | grep fetch | awk '{print $2}'
ブランチのアップストリームリモートの名前がわからない場合は、現在のブランチが構築されているアップストリームブランチの名前を調べることで最初にその名前を調べることができます。次のように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)
これは、クローン元のソースリモートリポジトリと必ずしも同じではないことに注意してください。しかし多くの場合それで十分でしょう。
#!/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
私にとっては、これがより簡単な方法です(入力が少なくなります)。
$ 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'
git config --list
このコマンドはあなたのリポジトリに関する全ての情報を与えます。