커밋이 처음 생성된 GitHub에서 꺼내기 요청 찾기
요청 꺼내기는 보고서에 대한 변경사항 또는 변경사항 집합에 대한 더 큰 생각을 이해하는 데 유용합니다.끌어오기 요청을 읽는 것은 소스에 대한 작은 원자적 변경 대신 논리적 변경의 더 큰 그룹을 얻을 수 있으므로 프로젝트를 신속하게 "그로킹"할 수 있는 좋은 방법입니다.코드의 행을 읽기 쉽게 관련 "스탠자"로 구성하는 것과 유사합니다.
파일이나 커밋을 보고 있는데, 원래 파일을 만든 풀 요청에 커밋을 역추적할 수 있는 방법이 있는지 궁금합니다.이 풀 요청은 결국 병합되었지만 병합 커밋을 사용할 필요는 없습니다.
GitHub로 이동하여 검색란에 SHA를 입력하면 왼쪽에 있는 "이슈" 링크를 선택할 수 있습니다.
2017년 7월 13일 업데이트됨
GitHub UI를 통해 이를 수행하는 정말 쉬운 방법이 있습니다.UI의 분기에 있는 커밋 목록에서 커밋을 확인하는 경우 커밋 자체에 대한 링크를 클릭합니다.해당 커밋에 대한 PR이 있고 분기에 직접 추가되지 않은 경우, PR 번호와 입력된 분기를 나열하는 PR 링크가 페이지 상단의 커밋 메시지 바로 아래에 표시됩니다.
을 가지고 만약당와 SHA다른것지있고고그찾것기을위, 요해여파세기그추하가냥면않다고싶고들지저기가를 추가하세요./commit/[commit SHA]그러면 커밋 페이지와 PR 링크(존재하는 경우)가 표시됩니다.예를 들어, SHA가 52797a7a7a3b087231e4e391e11ea861569205aaf4이고 repo가 https://github.com/glimmerjs/glimmer-vm 인 경우 https://github.com/glimmerjs/glimmer-vm/commit/52797a7a3b087231e4e391e11ea861569205aaf4 으로 이동합니다.
git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/*
git fetch origin
git describe --all --contains <COMMIT>
경우 합니다.origin꺼내기 요청이 전송되었을 GitHub 저장소를 가리키는 원격의 이름입니다.첫 번째 명령은 지정된 원격에 대해 한 번만 실행하면 되며 두 번째 명령은 일반적으로 다른 업데이트를 가져올 때 실행됩니다.
이로 인해 Git는 실제 분기와 함께 풀 요청에 대한 정보를 가져옵니다.그들은 원격 추적 지점으로 나타날 것입니다.origin/pull/123작업이 완료되면 다음을 사용할 수 있습니다.git describe와 함께--all그리고.--contains참조된 커밋이 있는 첫 번째 분기를 표시하는 옵션입니다.
그러나 원하는 커밋이 변경 내용이 다른 작업에 기반을 두었거나 병합을 수행하는 사용자가 일부 변경을 수행하기로 결정한 경우와 같이 실제로는 꺼내기 요청에서 커밋의 수정된 버전인 경우에는 이 작업이 작동하지 않습니다.
2014년 10월 13일 이후, 이것은 간단해야 합니다.
예:
파일을 보시면 아시겠지만, 저의 기고문은 이제 그것이 시작한 PR #734에 대한 언급과 함께 제공됩니다.

이는 커밋에서 병합된 꺼내기 요청 연결에서 발생합니다.
변경 내용에 대한 추가 컨텍스트를 제공하기 위해 분기와 태그를 커밋 페이지에 포함했습니다.이제 리포지토리의 기본 분기에 있는 커밋도 커밋을 소개한 꺼내기 요청을 표시합니다.

끌어오기 요청에서 커밋이 도입된 이유에 대한 논의를 확인하고 변경 이유를 보다 명확하게 파악할 수 있습니다.
항상 그렇듯이 커밋 SHA를 알고 있는 경우 커밋 페이지를 건너뛰고 꺼내기 요청을 직접 검색할 수 있습니다.
GitHub의 Pull Request 필터 필드에 커밋 해시를 넣습니다.
ghcli를 사용하여 이 작업을 수행할 수도 있습니다. 예는 다음과 같습니다.
gh pr list --search "30aedc5aaab4708b2144c648a9c7ace9aff4cd31" --state merged --json url --jq '.[0].url'
자세한 내용은 - https://cli.github.com/manual/gh_pr_list 을 참조하십시오.
저도 같은 문제가 있었고 여기에 문서화된 pr_for_shash 도우미를 작성했습니다.
http://joey.aghion.com/find-the-github-pull-request-for-a-commit/
처럼 말하시오pr_for_sha <COMMIT>그러면 브라우저에서 해당 github pull 요청 페이지가 열립니다.
나는 GitHub 웹 UI에서 건방진 작은 링크를 많이 사용했지만 터미널에서 바로 그곳으로 가는 더 빠른 방법을 원했습니다. 기본적으로.git pr SHA지휘권약간의 작업이 필요했지만 MacOS에서 이를 설정할 일련의 Git 별칭이 있습니다.
git config --global alias.merge-commits '!funct() { git log --merges --reverse --oneline --ancestry-path $1..origin | grep "Merge pull request"; }; funct'
git config --global alias.pr-number '!funct() { git merge-commits $1 | head -n1 | sed -n "s/^.*Merge pull request #\\s*\\([0-9]*\\).*$/\\1/p"; }; funct'
git config --global alias.web-url '!funct() { git config remote.origin.url | sed -e"s/git@/https:\/\//" -e"s/\.git$//" | sed -E "s/(\/\/[^:]*):/\1\//"; }; funct'
git config --global alias.pr '!funct() { open "`git web-url`/pull/`git pr-number $1`" ;}; funct'
Linux를 사용하는 경우 대체open와 함께xdg-open그리고 당신은 황금입니다.GitLab과의 작업에 적응하는 것도 그리 어렵지 않을 것입니다.
GitHub 흐름을 연습하고 명시적인 병합 커밋을 만드는 경우에만 이 기능이 작동합니다.
저는 이 모든 것이 어떻게 작동하는지에 대한 더 자세한 설명을 여기에 썼습니다: https://tekin.co.uk/2020/06/jump-from-a-git-commit-to-the-pr-in-one-command
저는 주어진 커밋에 대한 PR을 찾은 다음 Jenkins 빌드 정보와 함께 PR에 대해 의견을 제시하는 것과 유사한 것을 원했습니다.GH API를 사용하여 작동하는 방법은 다음과 같습니다.
# for a given SHA and repo
SHA=58d8b4407ab5d2b9a696236202308d92d3e25340
ownerRepo=redhat-developer/devspaces
# a. use gh to query a given repo for closed pulls for a given commitSHA; return the PR URL
PR_COMMENTS_URL=$(curl -sSL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${ownerRepo}/pulls?state=closed" | \
yq -r --arg SHA "$SHA" '.[]|select(.head.sha == $SHA)|.comments_url')
# b. comment on the PR by URL: https://api.github.com/repos/redhat-developer/devspaces/issues/848/comments
if [[ $PR_COMMENTS_URL ]]; then
curl -sSL -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github.v3+json" \
-X POST -d '{"body": "Building in currentBuild.absoluteUrl (GH API TEST)"}' "${PR_COMMENTS_URL}" | yq -r '.html_url'
fi
그런 다음 이 스크립트를 젠킨스 그루비/배시 블록 안에 싸서 전달할 수 있습니다.currentBuild.absoluteUrl실행 중인 빌드에서 GH 풀 요청으로 이동합니다.
ghcli를 사용한 동등한 코드:
# 0. install gh CLI
sudo yum -y -q install https://github.com/cli/cli/releases/download/v2.20.2/gh_2.20.2_linux_amd64.rpm
# a. use gh to query a given repo for merged PRs for a given commitSHA; return the PR URL
PR_HTML_URL=$(gh pr list --repo ${ownerRepo} --state merged --json url --jq '.[].url' \
--search $SHA)
# b. comment on the PR by URL: https://github.com/redhat-developer/devspaces/pull/848
if [[ $PR_HTML_URL ]]; then
gh pr comment $PR_HTML_URL -b "Building in currentBuild.absoluteUrl (GH CLI TEST)"
fi
Jenkins 파이프라인 코드 샘플의 경우:
이 명령은 특정 커밋 해시와 연결된 풀 요청 번호를 검색합니다.
작동 방식은 다음과 같습니다.
git ls-remote에는 Git 저장소에 대한 모든 원격 참조가 나열되어 있습니다.hash grep을 .
$SHA_COMMIT_ID.awk필터링된 결과를 처리하고 참조 문자열에서 꺼내기 요청 번호를 추출합니다.분할 함수는 참조 문자열을 슬래시 순방향으로 분할하고, 인쇄 명령은 결과 배열의 세 번째 요소인 풀 요청 번호를 출력합니다.는 김요청다저다니에 됩니다.
$PR_NUMBER메시지가 출력되고 꺼내기 요청 번호가 표시됩니다.
export PR_NUMBER=$(git ls-remote |grep '$SHA_COMMIT_ID'|awk '/refs\/pull\/.*\/./{split($2,a,"/");print a[3]}')
echo "PR Number: $PR_NUMBER"
언급URL : https://stackoverflow.com/questions/17818167/find-a-pull-request-on-github-where-a-commit-was-originally-created
'programing' 카테고리의 다른 글
| Pandas 데이터 프레임에서 만든 Excel 시트에 하이퍼링크를 _http 방법에 추가합니다. (0) | 2023.06.19 |
|---|---|
| Mongo 업데이트 어레이 요소(.NET 드라이버 2.0) (0) | 2023.06.19 |
| spring jpa application.properties 사용SSL (0) | 2023.06.19 |
| SSMS 결과 그리드 - CRLF가 복사/붙여넣기로 보존되지 않음 - 더 나은 기술이 있습니까? (0) | 2023.06.19 |
| 문서의 특정 부분 가져오기 (0) | 2023.06.19 |

