Gitでクローン元のリポジトリの名前を見つける


118

構文を使用して最初のクローンを行うとき

git clone username@server:gitRepo.git

ローカルリポジトリを使用して、最初のクローンの名前を見つけることはできますか?

(上記の例では、を見つけてくださいgitRepo.git。)


回答:


91

リポジトリルートでは、.git/configファイルはリモートリポジトリとブランチに関するすべての情報を保持します。あなたの例では、次のようなものを探す必要があります:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = server:gitRepo.git

また、Gitコマンドgit remote -vはリモートリポジトリの名前とURLを表示します。「元の」リモートリポジトリは通常、ローカルコピーのクローン元の元のリポジトリに対応します。


16
を使用git remote show originして、そのリモートについての詳細情報を表示することもできます。
Cascabel 2010年

1
これらの2つのメソッドはAnswerにあるように見えますが、同等です。git remote -v読み取りと書き込みだけのよう.git/configです。
flow2k

103
git config --get remote.origin.url

2
同意した gitリモートサーバーへの接続/認証を必要としないため、これが最適です。OPは「ローカルリポジトリを使用する」と尋ねましgit remote show originたが、ネットワークを呼び出します。
Travis Wilson、

1
ケーシーの答えがうまく機能するため、これはベースネームに包まれています
Jonathan Drapeau

29

これはクイックBashコマンドであり、おそらく検索しているはずですが、リモートリポジトリのベース名のみが出力されます。

どこからフェッチするか

basename $(git remote show -n origin | grep Fetch | cut -d: -f2-)

または、次の場所にプッシュます。

basename $(git remote show -n origin | grep Push | cut -d: -f2-)

特に-nオプションを使用すると、コマンドがはるかに高速になります。


11

私はこれを使います:

basename $(git remote get-url origin) .git

これはのようなものを返しますgitRepo。(.gitコマンドの最後にあるを削除すると、のようなものが返されますgitRepo.git。)

(注:Gitバージョン2.7.0以降が必要です)


2

organization/repogithubやgitlabのようなgitホストから文字列を取得しようとしているこの質問に遭遇しました。

これは私のために働いています:

git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'

コマンドsedの出力をgit config組織とリポジトリ名だけに置き換えるために使用します。

のようなものgithub/scientist[[:graph:]]、正規表現の文字クラスと一致します。

\1ちょうどマッチした文字で、すべてを交換するsedを指示します。


タイプミスの終わりは.gitではなく.getと表示します---- git config --get remote.origin.url | sed -e 's/^git@.*:\([[:graph:]]*\).git/\1/'
MSillence

ありがとう@MSillence、修正済み。
jhnstn

0
git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

3つの異なるURLスタイルでテストされました。

echo "Fetch URL: http://user@pass:gitservice.org:20080/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: Fetch URL: git@github.com:home1-oss/oss-build.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'
echo "Fetch URL: https://github.com/owner/repo.git" | ruby -ne 'puts /^\s*Fetch.*(:|\/){1}([^\/]+\/[^\/]+).git/.match($_)[2] rescue nil'

1
何をした
Maher

おそらく、Rubyの依存関係や、これがテストされたプラットフォーム(バージョン情報など)に関する情報を追加します。
Peter Mortensen

0

これは、値を取得するために機能します。

#!/usr/bin/env bash
repoSlug="$(git config --get remote.origin.url | cut -d/ -f5 | cut -d. -f1)"
echo ${repoSlug}

0

git repo nameのコマンドのPowerShellバージョン:

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