数日前にGitHubからプロジェクトをプルしました。それ以来、GitHubにいくつかのフォークがあることを発見し、最初にどのフォークを使用したかを書き留めていませんでした。引っ張ったフォークをどのように判断できますか?
26 に答える
リモート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:
スクリプトで値を使用する場合は、この回答にリストされている最初のコマンドを使用します。
スクリプトの目的でこれが必要な場合は、次のURLのみを取得できます。
git config --get remote.origin.url
あなたが試すことができます:
git remote -v
すべてのリモートのフェッチ/プッシュURLが出力されます。
答えを得るには:
git ls-remote --get-url [REMOTE]
これは、構成を読み取るよりも優れています。のマニュアルページをgit-ls-remote
参照してください:
--get-url
"url.<base>.insteadOf"
構成設定(を参照)を考慮して、指定されたリモートリポジトリのURLをgit-config(1)
展開し、リモートと通信せずに終了します。
@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>
)
Ben Boeckel()によるcommit 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のみがリストされます。insteadOf
pushInsteadOf
- '
--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/config
そしてremote["origin"]
あなたがそれを操作しなかったならば。
私にとって、これはより簡単な方法です(入力が少ない):
$ 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 remote show -n origin
または、純粋なクイックスクリプトの代替:
$ git config --get remote.origin.url
いくつかの情報:
$ git remote -v
すべてのリモコンを印刷します(必要なものではありません)。あなたは起源が欲しいですか?$ 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
3つのバージョンすべてに適用| grep -i fetch
して、フェッチURLのみを表示できます。
純粋な速度が必要な場合は、次を使用します。
$ git config --get remote.origin.url
それを指摘してくれた@Jefromiに感謝します。
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
覚えやすいので、これが好きです。
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
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サーバーが停止している場合でも機能します。
私は基本的に使用します:
git remote get-url origin
これは、WindowsのGitBashコマンドコンソールまたはCMDコマンドコンソールで機能します。そうは言っても、Gitのバージョン2.xで動作します。
git config --list
このコマンドは、リポジトリに関連するすべての情報を提供します。
アップストリームのリモートは「オリジン」と呼ばれない場合があるため、バリエーションを次に示します。
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/config
ファイルを開くことです。
cat .git/config
編集するには:
vim .git/config
また
nano .git/config
の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 ":"
他の回答を補足するために:リモートが何らかの理由で変更され、元のオリジンを反映していない場合、reflogの最初のエントリ(つまり、コマンドによって表示される最後のエントリgit reflog
)は、リポジトリが最初に複製された場所を示す必要がありますから。
例えば
$ git reflog | tail -n 1
f34be46 HEAD@{0}: clone: from https://github.com/git/git
$
(reflogがパージされる可能性があるため、これが機能することは保証されないことに注意してください。)
git remote show origin
プロジェクトディレクトリにいる必要があります。ただし、他の場所からURLを判別する場合は、次を使用できます。
cat <path2project>/.git/config | grep url
.bashrc
このコマンドが頻繁に必要になる場合は、MacOSまたはMacOSでエイリアスを定義できます.bash_profile
。
alias giturl='cat ./.git/config | grep url'
giturl
したがって、URLを取得するために、Gitルートフォルダーを呼び出す必要があります。
このエイリアスをこのように拡張すると
alias giturl='cat .git/config | grep -i url | cut -d'=' -f 2'
先行なしのプレーンURLのみを取得します
"url ="
の
あなたはその使用法でより多くの可能性を手に入れます:
例
open $(giturl)
Macでは、標準のブラウザでURLを開くために呼び出すことができます。
またはchrome $(giturl)
、LinuxのChromeブラウザで開きます。
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は関係ありません。
任意の名前のリモートフェッチ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 git@github.com:your-username/your-repository.git
cd your-repository
git-remote-url origin
出力:
https://github.com/your-username/your-repository
リモート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
.gitフォルダを配置した場所でこのコマンドを使用するだけで簡単です
git config --get remote.origin.url
ネットワークに接続している場合
git remote show origin
ローカルのGitリポジトリが最初に複製されたURLが表示されます。
この助けを願っています
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