풀 요청의 기본 분기를 변경하는 방법은 무엇입니까?


79

GitHub의 프로젝트에서 특정 원격 지점에 대한 풀 요청을 생성했습니다. 얼마 후 원격 지점이 삭제되었습니다.

다른 브랜치를 가리 키도록 풀 요청을 어떻게 변경할 수 master있습니까 (특히 )?


3
또한 요청 : github.com/isaacs/github/issues/18 , GitHub로 전송 된 메시지 및 수신 된 표준 "내부 버그 추적기 회신에 추가합니다".
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

답변:


79

업데이트 됨 : Michael 아래에 언급했듯이 이제 가능합니다 .

이제 열린 풀 요청의 기본 분기를 변경할 수 있습니다. 풀 요청을 생성 한 후에는 풀 요청의 변경 사항이 다른 분기와 비교되도록 기본 분기를 수정할 수 있습니다. 올바른 기본 브랜치로 새 요청을 여는 대신 원래 풀 리퀘스트의 기본 브랜치를 변경하면 귀중한 작업과 토론을 유지할 수 있습니다.

Edit풀 리퀘스트 제목 옆에 있는 버튼을 클릭하면 기본 브랜치 선택기가 표시됩니다.

풀 요청의 기본 브랜치를 변경하는 방법에 대한 애니메이션 예제입니다.


이전 답변

당신은 할 수 없습니다. 새로운 풀 리퀘스트를 만드십시오.


10
요점은 똑바로하지만 엄격하게 사실은 아닙니다 . 답변을 참조하십시오 .

7
문서화되지 않은 (그리고 잠재적으로 의도하지 않은) API 기능에 의존하는 것은 슬픔에 대한 해결책입니다.
Amber

15
아무도 문서화되지 않은 API 기능 에 의존하는 것에 대해 아무 말도하지 않았습니다 . 이 질문은 영구적으로 지원되는 지속적인 솔루션이 아닌 일회성 문제에 대한 해결책을 요구합니다. 그럼에도 불구하고 "당신은 할 수 없습니다"라고 말하는 것은 단순히 사실이 아닙니다.
Tom

5
어느 쪽이든 문서화되지 않은 API는 이제 손상되었으며 (다른 답변의 주석 참조) 매우 슬픈 일입니다.
2013 년

2
2016 년 8 월 15 일부터 가능합니다. Michael의 대답을 참조하십시오.
maliayas

35

문서화되지는 않았지만 GitHub REST API를 사용하여이를 수행 할 수 있습니다.

API 사용은 이 답변에 설명되어 있지만 기본적으로 다음과 같은 REST 요청을 발행 할 수 있습니다.

$ curl --user "tom" \
       --request PATCH \
       --data '{"issue": "15", "head": "tom:new-branch", "base": "master"}' \
       https://api.github.com/repos/fred/fabproj/pulls

이것은 포크 fred/fabprojnew-branch브랜치 를 사용하기 위해 리포지토리에서 이슈 15로 구현 된 풀 리퀘스트를 변경합니다 tom/fabproj.

편집 : 참고 : 의견에 따르면 위의 내용은 기존 문제에 새로운 pull 요청을 첨부 하기위한 것 입니다.


1
작동하지 못했습니다. 필드 issue에 잘못된 값이 있다고 불평하여 이미 인스턴스화 된 풀 요청을 더 이상 변경할 수 없음을 암시 할 수 있습니다. 부끄러움.
mxcl

1
API 호출을 올바르게 받았습니까? 내가 말할 수있는 한, 이것은 여전히 ​​작동해야하며 (다소) 문서화되어 있습니다. developer.github.com/v3/pulls를 참조하십시오 ( "Create a pull request"를 검색 한 다음 "Alternative Input"참조)
Tom

14
오늘 다시 시도했으며 더 이상 작동하지 않는 것을 확인할 수 있습니다. 이 작업을 수행하는 다른 방법을 찾기 위해 REST API를 계속 탐색 할 것입니다.
Tom

1
개발자 문서에 따르면 요청 유형은 PATCH 여야합니다. 다른 것은 현재 헤드 /베이스 수정이 지원되지 않는다는 것입니다. 참조 : developer.github.com/v3/pulls/#update-a-pull-request
Shekhar

4
Hey Jian, Tom이 '12 년 12 월 13 일의 댓글에서 언급했듯이, 이것은 (슬프게도!) 더 이상 작동하지 않습니다.
pvandenberk

19

2016 년 8 월 15 일부터 Github 를 통해 기본적으로 가능합니다 .

이제 열린 풀 요청의 기본 분기를 변경할 수 있습니다. 풀 요청을 생성 한 후에는 풀 요청의 변경 사항이 다른 분기와 비교되도록 기본 분기를 수정할 수 있습니다. 올바른 기본 브랜치로 새 요청을 여는 대신 원래 풀 리퀘스트의 기본 브랜치를 변경하면 귀중한 작업과 토론을 유지할 수 있습니다.


작동 방식은 제목을 편집 한 다음 "base :"버튼이 나타나고 변경할 준비가 된 것입니다.
AnneTheAgile

2

대상 지점을 변경할 수 있습니다. PR에서 대상 브랜치의 이름을 편집 할 수없는 것은 사실입니다. 그러나 트릭은 분기의 이름을 다른 것으로 바꾸고 대상 분기의 이름을 이미 PR에있는 현재 분기로 변경하는 것입니다.

예 : 내 PR의 이름은 "dev-4.9"입니다. "qa-4.9"라는 또 다른 분기가 있습니다. 내가 원하는 것은 "qa-4.9"가 PR 대상 분기 여야한다는 것입니다. 단계 : 1 1) "dev-4.9"브랜치의 이름을 "original-dev-4.9"로 변경합니다.

git checkout dev-4.9
git branch -w original-dev-4.9
git push origin original-dev-4.9

2) "qa-4.9"분기의 이름을 "dev-4.9"로 변경합니다.

git checkout qa-4.9
git branch -w dev-4.9
git push origin dev-4.9 -f (force push to write entire branch to reflect dev-4.9)

3) PR URL을 새로 고침하고 거기에 반영된 qa-4.9의 커밋을 확인합니다.


1

PR과 연결된 모든 주석을 삭제 된 분기로 잃는 대신 :

  1. 병합하려는 브랜치가 가진 동일한 이름과 내용으로 로컬에서 브랜치를 다시 만듭니다.
  2. 해당 분기를 푸시하여 원격 분기를 다시 만듭니다. 그리고
  3. 지점에 대한 PR을 다시 엽니 다.

예를 들어, 삭제 된 branch1에 대한 PR이 있습니다. 이제 마스터로 병합하고 기존 PR에 대한 주석을 유지하려고합니다.

  1. git checkout master
  2. git pull
  3. git checkout -b branch1
  4. git push
  5. 귀하의 PR을 branch1에 다시 엽니 다.
  6. branch1에 병합되면 마스터에 병합됩니다.

이것은 약간 해키하지만 많은 댓글을 삭제하는 것보다 훨씬 낫습니다.


나는 시작하기 위해 따라하지 않았으므로 다른 독자 (> = 나처럼 바보)를 명확히하기 위해 이것은 PR이 제출 된 repo를 제어하는 ​​경우입니다. 내가 관리하지 않는 오픈 소스 프로젝트에 제출 한 PR을 업데이트 할 방법을 찾고있었습니다.
rtpHarry


-2

이론에 의하면...

github api 를 사용해야 합니다.

예 : curl로 pull 요청 편집

curl --user "your_github_username" \
     --request PATCH \
     --data '{"title":"newtitle","body":"newbody",...}' \
     https://api.github.com/repos/:owner/:repo/pulls/:number

github 개발자 문서 에서 자세한 데이터 목록을 찾을 수 있습니다.

예 : 내 풀 리퀘스트 이름 변경

curl --user "jeremyclement" \
     --request PATCH \
     --data '{"title":"allows the control of files and folders permissions."}' \
     https://api.github.com/repos/Gregwar/Cache/pulls/9

하지만 실제로는 ...

필드 head/labelhead/ref편집 할 수없는 것 같습니다 . 현재로서는 유일한 해결책 은 Amber


이것은 현재 답변에 무엇을 추가합니까?
Léo Lam

톰에도 불구하고 앰버의 응답을 확인합니다.
hexaJer

2
이 답변이 전혀 필요하지 않음을 확인합니다. 이것은 현재 답변에 아무것도 추가하지 않습니다. Tom의 대답에는 이미 더 이상 적용되지 않는다는 알림이 있으며 주석도 이것을 나타냅니다.
Léo Lam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.