[git] 풀 요청에서 GitHub 복제?

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

메인 리포지토리 대신 풀 리퀘스트 버전을 복제 할 수 있습니까?



답변

-b옵션 및 pull 요청 을 사용하여 원하는 분기를 복제 할 수 있습니다 .

git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name

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

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


답변

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

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

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

다음을 실행하여 별칭을 설정할 수 있습니다.

git config --global alias.pro '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'

이제를 실행 git pr <pr_number>하거나 git pr <pr_number> <remote>github 리모컨의 이름이 지정되지 않은 경우 모든 PR을 확인할 수 있습니다 origin.


답변

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-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]