programing

다른 포크의 병합되지 않은 업스트림 풀 요청을 포크에 적용하려면 어떻게 해야 합니까?

jooyons 2023. 4. 10. 21:35
반응형

다른 포크의 병합되지 않은 업스트림 풀 요청을 포크에 적용하려면 어떻게 해야 합니까?

제가 포크를 가지고 있는 GitHub의 프로젝트는 저자가 아직 포크를 끌어당기지 않은 새로운 풀 요청을 가지고 있습니다.

다른 포크의 당김 요청을 내 포크에 적용할 수 있는 간단한 방법이 있나요?제가 놓치고 있는 게 또 있나요?

업데이트: 웹 페이지 경유

github 웹 페이지를 통해서도 이 작업을 수행할 수 있습니다.

포크)는 이미 있을 MyFork ) 。BaseRepo인 풀 Pooring Pull Request」(「Pooring Pool Request」)가 있다OtherFork을 사용하다

  1. Fork)로합니다.OtherFork 포크 「」에 풀( 「」)를 했습니다.MyFork)
  2. page page page 、 、 requests 、 requests 、 requests 、 go 、 go 、 go 、 go 、 go 、 go 。OtherFork
  3. 새 풀 요청 클릭
  4. 보류 중인 풀 요청을 제공해야 합니다. 「」를 해 주세요.OtherFork브런치도 있어요.을 포크로 합니다(포크MyFork)(중요).
  5. , 그럼 입니다.View pull request should should to to to to 로 바꿔야 한다Create pull request 이을 클릭합니다. 기를를클클클클클

으로 포크 pull )에 인 풀 입니다.MyFork )는 받아 들일 수 .

수동으로 간단하게 할 수 있습니다.

  • 다른 포크를 리포의 리모트로 추가합니다.

    git remote add otherfork git://github.com/request-author/project.git
    
  • 그의 의견을 받아들이다.

    git fetch otherfork
    
  • 풀 요청을 적용할 수 있는 옵션은 두 가지가 있습니다(선택 1을 선택하지 않을 경우).

    1. 오리진과 풀 요청 사이에 추가된 최종 커밋도 적용할 필요가 없다면 풀 요청이 형성된 브랜치를 기본 재배치할 수 있습니다.

      git rebase master otherfork/pullrequest-branch
      
    2. 풀 요구에 커밋만 필요한 경우 해당 SHA1을 식별하고 다음 작업을 수행합니다.

      git cherry-pick <first-SHA1> <second-SHA1> <etc.>
      

Tekkub이 전에 말한 것처럼, 브랜치를 직접 끌어당기면 됩니다.GitHub에서는 대부분의 경우 브랜치는 단순히 프로젝트의 사용자 포크에서 "마스터"입니다.

::git pull https://github.com/USER/PROJECT/ BRANCH

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

safaribooks라고 하는 github 프로젝트를 포크로 하고, 원래의 프로젝트에서 포크에 넣고 싶은 다음과 같은 풀 요청이 있다고 합시다.

여기에 이미지 설명 입력

그런 다음 포크의 복제된 프로젝트 폴더에서 다음을 실행하십시오.

git pull https://github.com/fermionic/safaribooks.git fix-str-decode

프로젝트에 대한 풀 요청은 다양한 작성자(포크)로부터 받을 수 있으며, 포크별로 별도의 리모콘을 필요로 하지 않을 수 있습니다.또한 작성자가 풀 요청을 제출할 때 사용한 브랜치나 작성자의 마스터 브랜치에 있을 수 있는 다른 브랜치에 대해 추측하고 싶지 않습니다.따라서 풀 요청은 다른 포크에 표시되는 것보다 업스트림 저장소에 표시되는 대로 참조하는 것이 좋습니다.

순서 1:

git remote add upstream <url>

이 단계는 이미 완료되어 있을 것입니다.그렇지 않은 경우 업스트림프로젝트에 리모트를 정의해야 합니다.URL은 분기한 프로젝트의 복제 URL입니다.자세한 내용은 리모컨의 포크 설정포크 동기화. upstream리모콘에 붙이는 이름으로, 어떤 것이든 상관없습니다.upstream일반적인 이름입니다.

순서 2:

git pull upstream refs/pull/{id}/head

...어디에{id}는 풀 요구 번호입니다. upstream는, 꺼낼 리모콘의 이름입니다.즉, 순서 1을 정확히 따랐을 경우는 「단순히」입니다.URL일 수도 있습니다.이 경우 1단계를 건너뛸 수 있습니다.

순서 3:

병합 커밋 메시지를 입력합니다.디폴트는 그대로 사용할 수 있지만 풀 요구 번호, 해결된 문제 및 간단한 설명을 포함한 한 줄의 요약 정보를 제공하는 것이 좋습니다.

Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions

좀 더 자세한 정보가 도움이 됐거든

분기된 repo의 .git/config 파일은 다음과 같습니다.

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = false
[remote "origin"]
        url = git@github.com:litzinger/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
        rebase = true
[remote "source"]
        url = git://github.com/revolunet/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/source/*
        fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

그런 다음 "git fetch source"를 실행하여 분기된 repo에서 모든 풀 요청을 나열합니다.

 * [new ref]         refs/pull/54/head -> origin/pr/54
 * [new ref]         refs/pull/67/head -> origin/pr/67
 * [new ref]         refs/pull/69/head -> origin/pr/69
 * [new ref]         refs/pull/71/head -> origin/pr/71

그런 다음 특정 풀 요청에서 병합하려면 "git merge master origin/pr/67"을 실행합니다.

제가 할 일은 다음과 같습니다.

git checkout master
git remote add #NAME# #ADDRESS TO REPO#
git fetch #USERNAME#
git checkout -b test_fork
git rebase #NAME#/#BRANCH#

이제 변경 내용을 테스트브런치로 통합했습니다test_fork어떤 변화도 내 트리를 더럽히지 않도록.

필요에 따라서, 상기와 같이 체리 픽을 사용하고, 필요에 따라서 특정의 커밋을 선택할 수 있습니다.

즐거운 여행 되세요 :)

나는 이것을 위해 편리한 댄디 스크립트를 사용한다.다음을 입력하여 스크립트를 실행합니다.

git prfetch upstream

업스트림포크에서 모든 풀 요구를 가져옵니다.

스크립트를 작성하려면 파일 만들기~/bin/git-prfetch.

파일에는 다음이 포함되어 있어야 합니다.

#!/bin/bash

if [ -z "$1" ]; then
    echo "Please supply the name of a remote to get pull requests from."
    exit 1
fi

git fetch $1 +refs/heads/\*:refs/remotes/$1/\* +refs/pull/\*/head:refs/remotes/$1/pr/\*

다음과 같이 설정하여 경로에 스크립트가 포함되어 있는지 확인합니다.

export PATH="$HOME/bin:$PATH"

이 파일을 다음에 추가할 수 있습니다.~/.bashrc영속적인 변경을 실시합니다.

이제 풀 요청을 받을 포크를 추가해야 합니다.

git remote add upstream https://github.com/user/repo.git

그리고 나서.

git prfetch upstream

언급URL : https://stackoverflow.com/questions/6022302/how-to-apply-unmerged-upstream-pull-requests-from-other-forks-into-my-fork

반응형