sourcecode

GitHub 풀 요청을 Git로 확인하려면 어떻게 해야 합니까?

codebag 2023. 7. 7. 18:59
반응형

GitHub 풀 요청을 Git로 확인하려면 어떻게 해야 합니까?

GitHub 웹 인터페이스를 통해 생성된 이전의 pull 요청을 확인하고 싶습니다.검색해보니 refs/pull 또는 refs/pull/pr이 있는 다른 곳을 찾았습니다.

하지만 제가 추가할 때fetch = +refs/pull/*/head:refs/remotes/origin/pr/* fetchgit을 합니다.

내가 뭘 잘못하고 있는 거지?GitHub이 pull/xyz 내용을 자동으로 생성해야 합니까, 아니면 구성해야 합니까?

원격 PR을 로컬 저장소로 가져오려면,

git fetch origin pull/$ID/head:$BRANCHNAME

$ID 요청 및 꺼기 요청 ID입니다.$BRANCHNAME생성할 새 분기의 이름입니다. " " " " " 를 작성합니다.

git checkout $BRANCHNAME

예를 들어, 오리진 주 분기에서 꺼내기 요청 #2를 체크아웃하려고 한다고 가정해 보겠습니다.

git fetch origin pull/2/head:MASTER

자세한 내용은 GitHub 공식 설명서를 참조하십시오.

분기 이름을 지정할 필요 없이 가져오기:

git pull origin pull/939/head

컴퓨터에서 특정 꺼내기 요청을 받으려면 어떻게 해야 합니까?

로컬 지점을 만들지 않고 가져오기 및 체크아웃하고 HEAD 분리 상태를 선호합니다.불필요한 로컬 분기로 로컬 컴퓨터를 오염시키지 않고 풀 요청을 빠르게 확인할 수 있습니다.

git fetch upstream pull/ID/head && git checkout FETCH_HEAD

ID ID 및 꺼기요입 ID입니다.upstream여기서 is는 원래 꺼내기 요청이 생성되었습니다(일 수 있음).origin예를 들어).

그 요지는 당신이 git fetch를 할 때 무슨 일이 일어나는지 설명합니다.

분명히, github URL을 프로젝트의 URL과 일치하도록 변경합니다.결국 다음과 같이 됩니다.

[remote "origin"]
    url = git@github.com:joyent/node.git
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
    fetch = +refs/heads/*:refs/remotes/origin/*

다음 순서를 기록합니다.fetchcrashneb댓글에서 제안된 refspecs, 그 자신의 답변에서.

그렇지 않은 경우, 다음과 같은 이유로 인해 올바른 주문을 받지 못한 경우를 의미합니다.

git config --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*" ... 

자연스럽게 할 수 .git switch pr/1도 있고, "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""git pull다시 한 번
branch.pr/1.merge구성 값이 올바르지 않습니다.


이제 모든 꺼내기 요청을 가져옵니다.

$ git fetch origin
From github.com:joyent/node
 * [new ref]         refs/pull/1000/head -> origin/pr/1000
 * [new ref]         refs/pull/1002/head -> origin/pr/1002
 * [new ref]         refs/pull/1004/head -> origin/pr/1004
 * [new ref]         refs/pull/1009/head -> origin/pr/1009
...

특정 끌어오기 요청 체크아웃하기

$ git checkout pr/999
Branch pr/999 set up to track remote branch pr/999 from origin.
Switched to a new branch 'pr/999'

작업을 자동화하기 위해 259호에 다양한 스크립트가 나열되어 있습니다.
git-extra 프로젝트는 다음 명령을 제안합니다.git-pr(PR 262에서 구현)

git-pr을 로컬로 합니다. -- " 꺼기요체합니웃다아크로로컬을청내▁--다니합▁locally웃▁checks"

개요

git-pr <number> [<remote>]
git-pr clean

묘사

GitHub 풀 요청 번호를 기반으로 로컬 분기를 만들고 나중에 해당 분기로 전환합니다.

가져올 원격의 이름입니다.은 " " "입니다.origin.

요청인 "요을니다합확인풀청"를합니다.226origin:

$ git pr 226

remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done.
From https://github.com/visionmedia/git-extras
  * [new ref] refs/pull/226/head -> pr/226
Switched to branch 'pr/226'

Github CLI를 사용하면 꺼내기 요청의 분기를 ID(doc)별로 로컬로 체크아웃할 수 있습니다.

gh pr checkout 2267

이를 통해 간단한 조작으로 변경 사항을 다시 포크로 밀어 넣을 수 있습니다.git push홍보 제출자가 사용자에게 포크에 대한 편집 권한을 부여한 경우.

Github.com 을 사용하는 경우 "Pull requests"로 이동하여 관련 pull requests를 클릭한 다음 "Command line instructions" 링크를 클릭합니다.

Steven Penny의 답변을 참고하여 테스트 브랜치를 생성하고 PR을 테스트하는 것이 가장 좋습니다.그래서 여러분이 할 일은 이렇습니다.

  1. PR을 로컬로 병합할 테스트 분기를 만듭니다.당신이 마스터 브랜치에 있다고 가정할 때:

git checkout -b test

  1. PR 변경 사항을 테스트 분기로 가져옵니다.

git pull origin pull/939/head:test

이제 이 로컬 테스트 분기(이 경우 test라는 이름의)에서 변경 사항을 안전하게 테스트할 수 있으며, 만족하면 GitHub에서 정상적으로 병합할 수 있습니다.

위의 일부 옵션의 문제는 PR을 연 후 누군가 PR에 커밋을 더 많이 푸시하면 최신 버전을 제공하지 않는다는 것입니다.나에게 가장 효과적인 것은 PR로 가서 '커밋'을 누르고, 가장 최근의 커밋 해시를 보려면 아래로 스크롤한 다음 단순히 git checkout을 사용하는 것입니다.

git checkout <commit number>

위의 예에서.

git checkout 0ba1a50

사용할 수 있습니다.git config에 새 것을 합니다..git/config저장소에서 꺼내기 요청을 가져오려면 다음을 수행합니다.

$ git config --local --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'

그리고 그냥:

$ git fetch origin
Fetching origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/container-images/memcached
 * [new ref]         refs/pull/2/head -> origin/pr/2
 * [new ref]         refs/pull/3/head -> origin/pr/3

비트 버킷의 경우 단어를 대체해야 합니다.pullpull-requests.

풀 할 수 방법은 "pull request URL" 입니다.git ls-remote origin지휘권

$ git ls-remote origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae    refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e    refs/pull-requests/1503/merge
...

보다피, 그은것입니다.refs/pull-requests/1503/fromrefs/pull/1503/from

그런 다음 모든 답변의 명령을 사용할 수 있습니다.

포크를 만들고 원격 업스트림 레포를 추가하는 "github fork" 워크플로우를 따르는 경우:

14:47 $ git remote -v
origin  git@github.com:<yourname>/<repo_name>.git (fetch)
origin  git@github.com:<yourname>/<repo_name>.git (push)
upstream        git@github.com:<repo_owrer>/<repo_name>.git (fetch)
upstream        git@github.com:<repo_owner>/<repo_name>.git (push)

현재 분기에 연결하는 명령은 다음과 같습니다.

git pull upstream pull/<pull_request_number>/head

코드는 다음과 같이 표시됩니다.

git fetch upstream pull/<pull_request_number>/head:newbranch

저는 github: https://github.com/github/hub 의 도구인 허브를 사용하고 있습니다.

허브가 로컬로 풀 요청을 체크아웃하면 다음과 같이 쉽게 처리할 수 있습니다.

hub checkout https://github.com/owner/repo/pull/1234
or
hub pr checkout 1234

저는 실수로 git-extra에서 제공한 것과 거의 같은 내용을 쓰게 되었습니다.따라서 다른 추가 명령을 설치하는 대신 단일 사용자 지정 명령을 선호하는 경우 이 파일을 사용자 지정 명령의 어딘가에 배치합니다.$PATH그런 다음 이렇게 쓰면 됩니다.

git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1

원격 PR 분기를 로컬 분기로 가져옵니다.

git fetch origin ‘remote_branch’:‘local_branch_name’

로컬 분기의 업스트림을 원격 분기로 설정합니다.

git branch --set-upstream-to=origin/PR_Branch_Name local_branch

PR 분기에 로컬 변경 사항을 다시 푸시하려는 경우

git push origin HEAD:remote_PR_Branch_name

Git의 최신 버전과 함께 사용하는 경우:

git fetch origin refs/pull-requests/<id>/from:<localbranchname>

로컬에서 PR을 빠르게 확인하려면 PR을 열고 PR이 생성된 지점 이름을 확인하십시오.

enter image description here 빨간색 선에서 볼 수 있듯이 지점 이름은 'CLUPET-173-glr-apis'입니다. 아래 명령을 사용하여 PR/지점의 코드를 빠르게 확인하십시오.

git checkout origin/CLUPET-173-glrr-apis

로컬의 이 코드는 분리된 헤드 모드로 실행됩니다.

모든 PR 코드 보기를 중지하고 이전 분기로 돌아가려면 다음과 같이 하십시오.

git switch -

PR(PR을 가져온 후 새로 변경한 로컬 변경 사항 포함)을 새 로컬 분기로 이동하려면 아래 명령을 사용합니다.

git switch -c myNewLocalBranch

출처 및 업스트림 정보가 아래와 같다고 가정합니다.

   $ git remote -v
   origin  git@github.com:<yourname>/<repo_name>.git (fetch)
   origin  git@github.com:<yourname>/<repo_name>.git (push)
   upstream   git@github.com:<repo_owner>/<repo_name>.git (fetch)
   upstream   git@github.com:<repo_owner>/<repo_name>.git (push)

그리고 당신의 지점 이름은.

   <repo_owner>:<BranchName>

그리고나서

   git pull origin <BranchName>

그 일을 할 것입니다.

PR을 체크아웃하고 해당 PR의 모든 변경 사항을 VSCode의 기본 분기와 비교하여 확인합니다.와 유사한files changedGithub PR 페이지의 섹션.

  1. 체크아웃 PR(100)이 '분리 HEAD' 상태임
    git fetch origin pull/100/head && git checkout FETCH_HEAD

  2. 커밋되지 않은 변경으로 표시
    git reset main

  3. 다시 주 분기로 전환하고 변경 사항을 전달합니다.
    git switch -

이 스레드에 대한 대부분의 답변이 작동하지만, 저는 새 분기에서 풀 요청을 가져와 이전 커밋으로 소프트 재설정(PR 변경 사항을 스테이징 영역으로 이동)하는 것을 선호합니다. 이를 통해 IDE의 차이를 테스트하고 확인할 수 있습니다.

git fetch origin pull/<PR-id>/head:<BRANCH_NAME>
git checkout BRANCH_NAME

그런 다음 이전 커밋으로 소프트 재설정합니다(사용하는 커밋 목록 참조).git log)

git reset --soft <hash_of_old_commit>

git fetch origin pull/65/head:test-branch 
git checkout test-branch
git log # press 'q' to exit
git reset --soft 7d7fe166cd878ed70c559c4e98faf2323532

위 명령을 실행하면 PR의 변경 내용이 풀되어 IDE 버전에 표시되며 변경 내용은 커밋되지 않으며 스테이징 영역에서 차이를 확인할 수 있습니다(변경 내용이 로컬에서 수행된 것처럼).

참조: Github 문서 참조

git-cli를 사용하여 이를 수행하는 쉬운 방법이 있습니다.

gh pr checkout {<number> | <url> | <branch>}

참조: https://cli.github.com/manual/gh_pr_checkout

로컬 분기 만들기

git checkout -b local-branch-name

원격 PR 꺼내기

git pull git@github.com:your-repo-ssh.git remote-branch-name

언급URL : https://stackoverflow.com/questions/27567846/how-can-i-check-out-a-github-pull-request-with-git

반응형