로컬 Git 리포지토리가 원래 복제 된 URL을 어떻게 확인할 수 있습니까?


4093

며칠 전에 GitHub에서 프로젝트를 가져 왔습니다. 나는 GitHub에 여러 개의 포크가 있음을 발견했으며 원래 어느 것을 가져 갔는지 언급하지 않았습니다. 뽑은 포크를 어떻게 확인할 수 있습니까?


163
git 2.7 (Q4 2015)을 사용 git remote get-url origin하면 가능합니다. 아래 내 답변
VonC


21
git remote get-url origin더 이상 사용되지 않을 수 있습니까? git remote show origin그래도 작동했습니다.
Klik

47
git remote -v이를 포함하여 많은 정보를 제공하십시오.
Thorbjørn Ravn Andersen 님이

git remote get-url origin --push잘 분명히 감가 상각을하지 않으며 작동 좋은 간단한 정보를 제공하는 ( git remote show origin할 수 있습니다 매우 QV 자세한) git help remote.
NeilG

답변:


5756

원격 URL 만 원하거나 원격 리포지토리에 연결할 수있는 네트워크에 연결되어 있지 않은 경우 :

git config --get remote.origin.url

당신은 최대 출력을 필요로하고 다음과 같은 경우 이다 기원이 상주하는 원격 REPO에 도달 할 수있는 네트워크에 :

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

6
원래 질문의 목적과 관련이 없지만 "Push URL"을 가져 오려고 시도하고 지정된 원격에 대해 여러 개의 URL을 입력 한 경우 git remote show origin(선택적으로 @에서 제공 한 -n 플래그와 함께) 를 사용해야합니다. Casey) 또는 git remote -v@Montaro 및 @rodel에서 제안한대로 사용합니다.
Amazingant

이 파일은 어떤 파일로 작성됩니까? 나는 .gitconfig파일이 그것을 가질 것이라고 생각 했지만 내 파일을 보지 못했습니다.
ayjay

1
@ayjay ´~/.gitconfig는 모든 git리포지토리에 전역 적 이며, 여기에 일반적으로있는 로컬 구성에서 나옵니다 .git/config(그러나 git-submodule의 경우 대답이 조금 더 어렵습니다). 그 주 strace git config --get remote.origin.url당신의 친구입니다.
티노

1
그러나 원래 URL은 현재 사용되는 리모컨의 URL 일 필요는 없습니다. 실제 사용 된 URL을 표시하려면이 솔루션이 필요합니다. stackoverflow.com/a/40630957/1069083
rubo77

620

스크립팅 목적으로 이것을 원한다면 URL 만 얻을 수 있습니다.

git config --get remote.origin.url

38
이것이 정답입니다. 원격 URL을 더 이상 사용할 수없는 경우 더 빠르며 작동합니다 ( git remote show origin"conq : repository does not exist").
apfelbox

5
이것은 설정 옵션 때문에 정답이 아닙니다 url.<base>.insteadOf. 내 대답을 참조하십시오-git에는이 목적을위한 명령이 있습니다.
칼 수 스터

2
@arcresu Cool, +1 당신에게! 국방부
에서이

1
@ Catatkul 전용 --git-dir은 관련이 있으며 (구성은 작업 트리 위치와 독립적으로 git dir에 있습니다) 그것은 나를 위해 작동합니다. 상위 디렉토리가 아닌 실제 .git 디렉토리의 경로를 지정 했습니까?
Cascabel

553

당신은 시도 할 수 있습니다:

git remote -v

모든 리모컨의 가져 오기 / 푸시 URL을 인쇄합니다.


255

답을 얻으려면 :

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) 까지는 문서화되지 않았습니다 .


2
좋은 방법 : 이것은 이전 버전에서도 동일하게 제공됩니다.> git remote -v | grep fetch | awk '{print $ 2}'
ravi.zombie

1
다른 답변의 대부분은 git 명령과 git history에 대한 박람회에 대한 쇼 앤 텔에 가깝습니다. 이것은 업스트림이라고 가정하지 않는 유일한 답변입니다 origin.
Mike 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 05 10 월) :mathstuf
gitster

remote : add get-url 하위 명령

확장 insteadOf은 확장 의 일부이며 ls-remote --url확장 할 방법이 없습니다 pushInsteadOf. 구성된 모든 URL을 얻는 방법뿐만 아니라 쿼리 할 수 ​​있도록 부속 명령을
추가하십시오 get-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]

4
5 년 후 많은 변화가 있었으며 지금은 이것이 정답이되어야합니다. 그러나 2.7 이전 구문도 추가하십시오.
msp December

58

요약하면 다음과 같은 네 가지 방법이 있습니다.

(공식 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
참고 git config --get remote.origin.url는 설정 한 동안 git remote add ...또는 원래 설정된 원래 URL git remote set-url ...git ls-remote --get-url origin검색합니다. 실제로는 원격 액세스에 사용되는 URL 을 검색합니다 git config --global url.XXX.insteadOf YYY. 따라서 두 출력이 다를 수 있습니다! 또한 git ls-remote --get-url(없이 origin)은 반드시 검색하지 않고 origin추적 된 업스트림을 표시하므로 분리 된 HEAD 상태에서 실패합니다.
티노


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그것은 원격 헤드 (AKA 가지)를 가져 오지 않습니다. 그런 정보가 필요하지 않습니까?

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

| grep -i fetch가져 오기 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


나는 이것을 많이 좋아한다!
Alfie

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 명령 콘솔에서 작동합니다. 즉, 버전 2.x의 Git에서 작동합니다.



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.
티노

9

다른 답변을 보충하려면 : 어떤 이유로 리모컨이 변경되어 원래 원점을 반영하지 않는 경우 reflog의 첫 번째 항목 (즉, 명령에 의해 표시된 마지막 항목 git reflog)은 저장소가 원래 복제 된 위치를 나타내야합니다 에서.

예 :

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

reflog가 제거 될 수 있으므로 작동하지 않을 수도 있습니다.


1
"원래"리모컨이 변경된 경우이 방법이 유일한 방법 일 것입니다.
저스틴 옴스

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 브라우저에서 열 수 있습니다.


8

간단한 방법은 .git/config파일 을 여는 것입니다 .

cat .git/config

편집:

vim .git/config 또는

nano .git/config


1
이것은 당신이 리눅스 (?)에 있다고 가정합니다.
Peter Mortensen

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.