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

1
이 두 가지 방법이 답변에있는 것처럼 보입니다. git remote -v그냥 읽고 쓰는 것 같습니다 .git/config.
flow2k

103
git config --get remote.origin.url

2
동의합니다. 이것은 git 원격 서버에 대한 연결 / 인증이 필요하지 않기 때문에 가장 좋습니다. OP는 "로컬 저장소 사용"을 요청했지만 git remote show origin네트워크를 호출합니다.
Travis Wilson

1
같은베이스 이름에 싸여이 케이시 '대답은 잘 작동
조나단 드라 포에게

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'

세 가지 다른 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
당신이 무슨 짓을했는지 설명 하는 방법-에 응답
마 헤르

아마도 더 많은 정보를 추가 할 수 있습니다. 예를 들어 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 이름에 대한 명령의 Powershell 버전 :

(git config --get remote.origin.url) -replace '.*/' -replace '.git'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.