programing tip

풀 요청에서 GitHub 복제?

itbloger 2020. 8. 7. 08:06
반응형

풀 요청에서 GitHub 복제?


GitHub에서 저장소를 복제하고 싶습니다. 문제는 내가 메인 브랜치를 원하지 않는다는 것입니다. 이 승인되지 않은 풀 요청 의 버전을 원합니다 .

주 저장소 대신 풀 요청 버전을 복제 할 수 있습니까?


명령 -b옵션 을 사용하여 원하는 분기를 복제 할 수 있습니다 git clone.

귀하의 경우 복제하려는 브랜치는 풀 요청의 소스 브랜치입니다 (feature / mongoose-support) :

git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone

이를 수행하는 가장 쉬운 방법은 다음과 같습니다.

git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD

이제 풀 요청 상태에있는 새 분기에있게됩니다.


git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH

예 :

$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611

GitHub의 포크에서 변경, 커밋, PUSH 및 새 PR 열기


이 요점 의 지침에 따라 저장소와 브랜치를 파악하지 않고도 리모컨을 직접 확인할 수 있습니다.

사용 예

내 프로젝트 중 하나 (github3.py)의 경우 다음이 있습니다. github3.py/.git/config

[remote "github"]
    fetch = +refs/heads/*:refs/remotes/github/*
    fetch = +refs/pull/*/head:refs/remotes/github/pr/*
    url = git@github.com:sigmavirus24/github3.py

첫 번째 줄은 github원격의 이름으로 대체되는 예외를 제외하고 모든 원격의 표준입니다 . 이것이 의미하는 바는 원격 헤드 (또는 해당 서버의 분기 헤드)가 접두사가 붙은 로컬 원격에 "매핑"된다는 것 github/입니다. 그래서 만약 내가 git fetch githubGitHub에 브랜치를 가지고 있었는데 아직 내 컴퓨터에서 로컬로 발견되지 않았다면 브랜치를 다운로드 할 것이고 다음과 같이 전환 할 수있을 것 git checkout -t github/branch_name입니다.

두 번째 줄은 동일한 작업을 수행하지만 표준 git 분기 대신 풀 요청에 대해 수행합니다. 그것이 당신이 보는 이유 refs/pull/*/head입니다. GitHub에서 각 pull 요청의 헤드를 가져 와서 github/pr/#. 따라서 누군가가 pull 요청을 보내고 번호가 62 인 경우 (예 :) 다음을 수행합니다.

git fetch github
git checkout -t github/pr/62

그런 다음 pr/62(이미 존재하지 않는다고 가정) 라는 로컬 지점에 있습니다. 훌륭하고 다른 사람의 리모컨이나 지점을 추적 할 필요가 없음을 의미합니다.


사용자가 풀 요청을 제출하면 일부 변경 사항을 포크 복제본의 브랜치에서 다른 사용자의 저장소로 다시 병합하도록 요청합니다.

원하는 변경 사항은 pull 요청의 소스에서 가져올 수 있습니다. 이렇게하려면 사용자의 저장소 ( git://github.com/berstend/frappe.git)를 복제 한 다음, 그가 풀 요청을 생성 한 브랜치를 확인합니다 ( feature/mongoose-support).


git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head

내가 소유하지 않은 브랜치에 대해 병합되지 않은 풀 리퀘스트를 어떻게 가져올 수 있습니까?


git-extras 설치 후

(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)

당신은 단순히 사용할 수 있습니다 git pr

$ git pr 62 [remote]

그 풀 요청은 그 사람의 포크에서 커밋을 보여 주므로 그가 feature/mongoose-support브랜치 에서 변경 사항을 푸시하고 있음을 알 수 있습니다 .

그의 저장소를 복제하고 해당 브랜치를 체크 아웃 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/14947789/github-clone-from-pull-request

반응형