커밋이 원래 생성 된 Github에서 풀 요청 찾기


171

풀 요청은 리포지토리에 대한 변경 또는 변경 세트에 대한 더 큰 사고를 이해하는 데 유용합니다. 풀 요청 읽기는 소스에 대한 작은 원자 적 변경 대신 논리적 변경에 대한 더 큰 그룹화를 가지므로 프로젝트를 신속하게 "확대"할 수있는 좋은 방법입니다. 쉽게 읽을 수 있도록 코드의 행을 관련 "스탠자"로 구성하는 것과 유사합니다.

파일이나 커밋을보고 있으며 커밋을 원래 생성 한 풀 요청으로 되돌릴 수있는 방법이 있는지 궁금합니다. 해당 풀 요청은 결국 병합되었지만 병합 커밋에는 필요하지 않습니다.


1
+1 프로젝트를 분기하고 오래된 작업 지점을 가지고 있고 더 이상 PR을 만들지 않은 경우 더 이상 유용합니다.
Steve Clay

답변:


225

github로 가서 검색 창에 SHA를 입력하고 왼쪽에서 "Issues"링크를 선택하십시오.

2017 년 7 월 13 일에 업데이트 됨

Github UI를 통해이 작업을 수행하는 정말 쉬운 방법이 있습니다. UI의 브랜치에있는 커밋 목록에서 커밋을 보려면 커밋 자체에 대한 링크를 클릭하십시오. 해당 커밋에 대한 PR이 있고 지점에 직접 추가되지 않은 경우 PR 번호와 해당 지점을 나열하는 PR 링크는 페이지 상단의 커밋 메시지 바로 아래에 표시됩니다. 여기에 이미지 설명을 입력하십시오


커밋에 대한 링크를 클릭하여 PR을 찾는 예

커밋 SHA가 있고 다른 것을 찾지 않고 파고 들지 않으려면 /commit/[commit SHA]repo url을 추가 하면 PR 링크가있는 커밋 페이지가 표시됩니다. 예를 들어, SHA가 52797a7a3b087231e4e391e11ea861569205aaf4이고 리포지토리가 https://github.com/glimmerjs/glimmer-vm 인 경우 https://github.com/glimmerjs/glimmer-vm/commit/52797a7a3b087231e4e39205eafea


짧은 SHA와 함께 작동하게 할 수는 없지만 e4077951여전히 효과가 있습니까?
Matt Sanders

@RustyToms 이것은 작동하지만 내가 언급 한 것처럼 커밋 해시를 검색했을 때 [ github.com/wso2/carbon-kernel/… 두 가지 풀 요청을 제공합니다. 둘 다 동일한 커밋을 마스터에 병합했습니다. 이러한 종류의 시나리오에서 관련 커밋을 병합 한 풀 요청으로 선택해야 할 것
Kasun Siyambalapitiya

@RustyToms API를 통해 어떻게 이것을 달성 할 수 있을까
Kasun Siyambalapitiya

1
@marathon 이제 더 쉬운 방법이 있습니다. 답변을 업데이트하겠습니다
RustyToms

1
PR에 대한 참조가 없으면 PR이 없다고 결론 내릴 수 있습니까? 즉, 커밋이 지점에서 직접 이루어 졌 master습니까?
에릭

53
git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/*
git fetch origin
git describe --all  --contains <COMMIT>

필요한 경우 origin풀 요청이 전송 된 github 저장소를 가리키는 원격의 이름으로 변경 하십시오. 첫 번째 명령은 지정된 원격 장치에 대해 한 번만 실행하면되고 두 번째 명령은 일반적으로 다른 업데이트를받을 때 수행됩니다.

이로 인해 git은 실제 브랜치와 함께 pull 요청에 대한 정보를 얻습니다. 그들은 같은 원격 추적 지점으로 표시됩니다 origin/pull/123. 완료되면 and 옵션 git describe과 함께 사용 하여 참조 된 커밋이있는 첫 번째 분기를 표시 할 수 있습니다 .--all--contains

그러나 찾고있는 커밋이 실제로 변경 사항이 다른 작업에 기반하거나 병합을 수행하는 사람이 일부 변경하기로 결정한 경우와 같이 풀 요청에서 수정 된 커밋 버전 인 경우에는 작동하지 않습니다.


이 결과로 거부 된 PR의 모든 커밋을 다운로드한다고 가정합니다. pull/*/headBlob없이 커밋 목록을 가져 오는 방법이 없습니까? 이 후 어떻게 "정리"합니까 (원점 재구성)?
Steve Clay

1
이것은 아는 것이 좋습니다. 나는 GitHub가 이것을 실제 Git 객체로 추적한다는 것을 전혀 몰랐지만 완벽하게 이해됩니다. BTW config 명령에서 "origin"대신 "upstream"을 사용 했습니까?
Tobias J

1
@TobyJ의 사용 upstream은 실제로 실수였습니다. 원격의 이름이 지정된 구성이있는 저장소에서 복사하고 원격 의 이름으로 upstream보다 일반적인 origin이름 을 사용하도록 변경하면 해당 항목을 놓쳤습니다 . 나는 그것을 고치기 위해 답을 편집했다.
qqx

감사! 그러나 이것은 너무 복잡합니다. 웹 UI에 포함 풀 요청에 대한 링크가 있었으면 좋겠다.
Daniel Darabos

FWIW 당신은 또한 사용하여 시도 할 수 있습니다 refs/remotes/origin/pr/*대신refs/remotes/origin/pull/*
elaichi

21

2014 년 10 월 13 일부터는 간단합니다.

예를 들면 다음과 같습니다.

당신은 파일을 볼 수 있습니다 hakimel/reveal.js/plugin/markdown/markdown.js, 내 기여는 이제 그것이 시작된 PR # 734에 대한 참조와 함께 제공됩니다 .

contrib에서 PR

이것은 커밋에서 병합 된 풀 요청연결하는 것입니다 .

우리는 봤는데 커밋 페이지에 포함 된 브랜치와 태그를 포함하여 변경의 주위에 당신에게 더 많은 컨텍스트를 제공 할 수 있습니다. 이제 리포지토리의 기본 브랜치에서의 커밋은이를 소개 한 풀 요청을 보여줍니다.

PR 참조로 커밋하십시오!

풀 요청에서 커밋이 도입 된 이유에 대한 토론을보고 변경 이유에 대한 명확한 그림을 얻을 수 있습니다.

커밋 SHA를 알고 있다면 항상 커밋 페이지를 건너 뛰고 풀 요청을 직접 검색 할 수 있습니다 .


내가 언급 한 것처럼 커밋 해시를 검색했을 때 [ github.com/wso2/carbon-kernel/… 두 가지 풀 요청이 모두 동일한 커밋을 마스터에 병합했습니다. 이러한 종류의 시나리오에서 관련 커밋을 병합 한 풀 요청으로 선택해야 할 것
Kasun Siyambalapitiya

@KasunSiyambalapitiya 확실하지 않습니다 : 새로운 질문을 할 수 있습니다. 나는 가장 최근에 갈 것입니다.
VonC

2
우리는 이것을 API레벨 에서 얻을 수 있습니까?
Kasun Siyambalapitiya

@KasunSiyambalapitiya 좋은 질문입니다. 모르겠어요 나는에 해당 참조 볼 수 없습니다 developer.github.com/v3/repos/commits/#get-a-single-commit
VonC

@esp 재미있는. PR 목록은 있지만 SHA1 커밋은 통합을 표시하지 않습니다.
VonC 2016 년


3

나는이 같은 문제가 있었고 여기에 문서화 된 pr_for_sha bash 도우미를 작성했습니다.

http://joey.aghion.com/find-the-github-pull-request-for-a-commit/

그것을 호출하면 pr_for_sha <COMMIT>브라우저에서 해당 github pull 요청 페이지가 열립니다.


2
이 솔루션은 커밋 다음에 가장 가까운 병합이 커밋을 포함하는 병합이라고 가정합니다. 반드시 그런 것은 아닙니다.
Jason Denney

@JasonDenney 주어진 지점이나 시간을 의미합니까?
LeZuse

흠, 이것은 얼마 전의 일이지만, 제 생각에는 제 생각에는 제 생각에 월요일에 지점 A에서 커밋 "X"를하고 화요일에 지점 B에서 커밋을하고 분기 B를 마스터로 병합하고 수요일에 분기 A를 마스터로 병합한다고 가정합니다. PR 커밋 "X"가있는 마스터 브랜치에서이 스크립트를 사용하여 검색을 수행했다면 브랜치 B에게 잘못 알려주는 것이 확실합니다. 그래도 직접 확인하십시오.
Jason Denney

git log명령이 작동 하지 않습니다 . git log --merges --ancestry-path --oneline 66100ab0..master- fatal: ambiguous argument '66100ab0..master': unknown revision or path not in the working tree.-git version 2.25.0
지안 프랑코 P.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.