2010-03-28 2 views
2

나는 git 명령 (어쩌면 그것의 SHA, 아마도 "origin/master"또는 "devel/epxerimental"과 같은 것)을 전달할 수 있기를 원한다. git은 브랜치의 ref 경로를 알려준다. 건네받은 것, 예를 들면 git SHA에 대한 관련 참조 경로를 얻으려면 어떻게해야합니까?

<git_command> 0dc27819b8e9 => output: refs/heads/master 
<git_command> xyz/test => output: refs/remotes/xyz/master 
... 

나는 git show 또는 git log 또는 git rev-parse 떨어져 --pretty=format:%d에서 난 아무것도 찾을 수 없습니다에서 찾고 있었어요. ( --pretty=format:%d) 출력은 lotsa 여유 공간과 빈 줄이 매우 이상하며 때로는 둘 이상의 참조 경로가 한 줄에 모여 있습니다.

더 좋은 방법이 있을까요?

읽어 주셔서 감사합니다.

앙드레 SHA1이 심판 경로와 모든 시간에 연결되어 있지 않으므로, 이러한 데이터를 기록 할 고정 된 정보가 없습니다

답변

5

. SHA1은 여전히 ​​(그것이 어떤 심판 패턴에 의해 참조되지 않으면, 그것은 결국 정리 될 것 제외)

말했다되고 그건 저장됩니다 동안
지점이 이동은, 이름을 변경하거나 삭제할 수 있습니다 :

git show-ref |grep yourSHA1|awk "{print $2}" 
git show-ref --heads --tags -d |grep yourSHA1|awk "{print $2}" 

이 행해져 Yout이 원하는에 아주 가까이 온다 :

C:\Prog\Git\tests\rep\main5>git show-ref | grep f4a071 | awk "{print $2}" 
refs/heads/master 
refs/remotes/origin/HEAD 
refs/remotes/origin/master 

옵션의 많은 git show-ref 가능하며 당신을 수 있습니다 :

  • 디스플레이는 심판의 패턴
  • 디스플레이 SHA1 만 SHA1을 역 참조

영업 이익은 추가하십시오 SHA 통과하면 전혀 아무것도 돌려주지 않는 것

하지 않습니다 머리 또는 다른 참조 할 수없는 커밋을 참조 하시겠습니까?
SHA가 통과 된 동일한 지점에 속한 가장 최근 커밋의 SHA를 알아내는 중간 단계를 수행 할 수있는 아이디어가 있습니까?

도움이 될 수 있습니다 또 다른 배관 명령은 git name-rev 다음과 같습니다 Jefromi으로


이 코멘트에 언급

C:\Prog\Git\tests\rep\main5>git name-rev a7768453 
a7768453 patches~1 

C:\Prog\Git\tests\rep\main5>git name-rev a7768453|gawk "{gsub(/~.*/,\"\",$2);print $2} 
patches 
은, 도자기 명령 git branch --contain 다음과 같습니다

C:\Prog\Git\tests\rep\main5>git branch --contain 1e73e369 
    master 
* patches 
    tmp 

--contains <commit> 

s를 포함하는 가지만 나열하십시오 pecified 커밋.
<commit>이 브랜치로 수정되었거나 수정 된 경우 특별한주의가 필요한 모든 브랜치를 찾으려면 해당 브랜치에 지정된 <commit>이 포함되어 있으므로이를 사용합니다.

+0

고마워하고있어 바로 그 10 만 문제가 왼쪽에서 가까운 적어도 9 번 오지 않습니다하십시오 SHA 커밋 머리 또는 기타 dereferencable를 참조하지 않는 전달 된 경우는 전혀 아무 것도 반환하지 않습니다 ? SHA와 동일한 분기에 속한 가장 최근 커밋의 SHA를 알아내는 중간 단계를 수행 할 수있는 아이디어가 있습니까? 예를 들어 커밋 32에 대해 SHA를 전달하면 커밋 0에 대한 SHA가 반환됩니다 (일명 HEAD))? – andreb

+1

@andreb : 좋은 지적입니다. 'show-ref '는 ref에 의해 직접 SHA1을 참조 할 때만 사용됩니다. 'name-rev'는 나머지를 잡는 데 도움이 될 수 있습니다. 내 업데이트 답변을 참조하십시오. – VonC

+0

@andreb : http://stackoverflow.com/questions/917102/in-git-is-there-a-way-to-get-the-friendly-name-for-an-arbitrary-commit 자세한 내용은 – VonC

관련 문제