github의 기존 이슈에 새로운 풀 요청을 어떻게 첨부합니까?


409

확실하지는 않지만 제목이 "Issue 4"또는 기타 항목으로 github pull 요청을 작성하는 모호한 기억이 있으며 제출 한 프로젝트의 Issue 4에 자동으로 첨부됩니다. 최근에 다시 시도했지만 작동하지 않았습니다. 대신 새로운 문제가 발생했습니다. 새 풀 요청 페이지에 "발행 첨부"와 같은 옵션이나 문제 페이지에 "이 문제에 대한 새 풀 요청 열기"와 같은 옵션이 표시되지 않습니다. 프로젝트 소유자가 이슈 페이지를 깨끗하게 유지하고 중복을 피할 수 있도록하는 방법이 있습니까?

편집 : 분명히하기 위해 풀 요청을 만들면 항상 새로운 문제가 발생 한다는 것을 알고 있습니다. 대신 기존 요청에 풀 요청을 첨부하고 싶습니다 .


1
내 대답은 원하는 기능 ( " 기존 문제에 풀 요청 첨부 ")이 아직 없을 수도 있다는 사실을 표현한다고 생각 합니다.
VonC

그것은 않습니다 (그리고 그 사실에 의해 확인에 이 트윗 )뿐만 아니라 내 질문에 명확 수 있었다 깨닫게했다.
MatrixFrog

나는 github 우선 순위 목록에서 기능이 높기를 바랍니다.
flq

2
정답은 masukomi 's로 바뀌어야합니다. 이제 "fixs # 1"방법을 사용할 수 있습니다. API를 거치지 않아도됩니다.
Edward Anderson

여전히 기존 문제에 풀 요청을 첨부하는 방법을 찾을 수 없습니다. 내가 놓친 것이 있습니까? 이 스레드의 답변은이 기능이 존재한다고 제안하는 것으로 보이지만 찾을 수는 없습니다 (항상 새로운 문제가 발생 함).
Kevin Jalbert

답변:


245

"hub"프로젝트는 다음을 수행 할 수 있습니다.

https://github.com/defunkt/hub

풀 요청을 보내려는 저장소 및 지점에서 다음을 수행하십시오.

$ hub pull-request -i 4

이것은 GitHub API를 사용하고 현재 브랜치에 대한 풀 요청을 기존 이슈 번호 4에 첨부합니다.


편집 : @atomicules의 코멘트 : @MichaelMior의 답변을 확장하려면 전체 예를 들면 다음과 같습니다.

$ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE

12
brew install hubhomebrew와 함께 설치
gcamp

11
이것은 나를 위해 작동하지 않습니다. 풀 요청 생성 오류 : 처리 할 수없는 엔티티 (HTTP 422)
Rubycut

11
@ Rubycut 나는 같은 문제가있었습니다. 대신 나는했고 hub pull-request URL_TO_ISSUE, 그것은 나를 위해 일했다. -i ISSUE_NUMBER문제가 같은 저장소 (즉, 포크가 아님)에있는 경우 에만 작동하는지 궁금합니다.
Michael Mior

30
@MichaelMior의 답변을 확장하려면 전체 예를 들면 다음과 같습니다.hub pull-request -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE
atomicules

4
참고 이것은 단지 문제에서 작동 당신이 만든 : github.com/defunkt/hub/issues/189#issuecomment-6353354
자크

237

일반적인 github 방법을 사용한다고 가정하면 기존 업스트림 문제에 풀 요청을 추가하는 것은 쉽습니다 .

지원되는 키워드를 사용하여 커밋 메시지에서 문제를 참조하십시오 .

  • 닫기
  • 마감
  • 닫은
  • 고치다
  • 수정
  • 결정된
  • 결의
  • 해결하다
  • 해결

예 : "이 커밋 수정 # 116"

문제를 언급하는 텍스트가 커밋의 제목 줄에 나타날 필요는 없습니다.

커밋을 github 저장소에 푸시하면 풀 요청이 자동으로 문제에 추가됩니다.

참고 : 필요하지는 않지만 해당 분기에 대한 향후 커밋이 풀 요청에 자동으로 추가되므로 (github에서 자동으로 풀 요청에 포함되는 모든 것을 해당 문제와 관련된 별도의 분기에 커밋하는 것이 좋습니다. ). 따라서 별도의 브랜치를 만들지 않고 마스터에 남겨두고 개발을 계속하면 마스터에 대한 모든 관련되지 않은 커밋이 풀 요청에 추가됩니다.


31
"해당 지점에 대한 향후 커밋이 풀 요청에 추가되므로 풀 이슈의 일부가 될 사항은 해당 이슈와 관련된 별도의 브랜치에 커밋하는 것이 좋습니다." 그것은 한 번 나에게 일어 났고 그것은 놀랍습니다.
MatrixFrog

9
불행히도 문제를 풀 요청으로 바꾸는 문제는 해결되지 않습니다. 문제에 관한 토론은 풀 요청으로 전달되지 않습니다 ... 다수의 유스 케이스에는 불행합니다. Github이 repo 설정에서 pull-req가 작동하는 방식을 세부적으로 제어하기를 바랍니다.
Alex Waters

1
@masukomi 프로젝트 관리자가 풀 요청을 쉽게 해결할 수 있습니다. 버튼을 클릭하여 변경 사항을 수락하고 병합 할 수 있습니다. 풀 요청을 사용하지 않고 포크에서 변경 사항을 가져 오려면 포크를 원격으로 추가하고 변경 사항을 가져 와서 직접 병합해야합니다.
Rory O'Kane

2
로리 내 요점을 놓친 것 같아 풀 요청을 작성하고 문제에서 언급 한 경우 (제안한대로) 두 개가 연결되어 있으며 버튼을 클릭하여 변경 사항을 가져올 수 있습니다.
masukomi

2
풀 요청이 진행중인 경우에는 도움이되지 않습니다. 우리의 작업 흐름은 아이디어에 대한 이슈를 생성 한 다음 아이디어에 대한 작업을 시작하면 기능 지점에서 요청을 가져 오는 것입니다. 풀 요청에서 커밋을 사용하여 이슈를 종료한다는 것은 이슈에 포함 된 이전 토론을 잃어 버리는 것을 의미하며, 여기에는 종종 이슈가 해결하는 기능 / 수정 / 리 팩터를 해시하는 것이 포함됩니다. 실제로 필요한 것은 문제에 대한 작업이 시작된 후 문제를 풀 요청으로 바로 전환하는 방법입니다.
Daniel Bingham

144

Pull Request API를 사용하여 기존 이슈에서 풀 요청을 생성 할 수 있습니다 .

$ curl --user "smparkes" \
       --request POST \
       --data '{"issue": 15, "head": "smparkes:synchrony", "base": "master"}' \
       https://api.github.com/repos/technoweenie/faraday/pulls

풀 요청을 만듭니다.

  • 질문 technoweenie프로젝트에 faraday(https://api.github.com/repos/ technoweenie / 패러데이 / 당긴)
  • synchrony분기점에서 smparkes포크 로 가져 오기 ( "head": " smparkes : synchrony ")
  • 받는 사람 master의 지점 technoweenie의 포크 ( ""기본 " 마스터 ")
  • 풀 요청을 발행하여 이슈 15를 발행하십시오 ( "issue": 15 )
  • 풀 요청 작성자 smparkes(--user " smparkes ")
  • GitHub 비밀번호를 묻는 메시지가 표시됩니다

1
해당 링크에서 일부 샘플 코드를 복사했습니다. 괜찮 으시길 바랍니다. 잘못 번역하면 알려주세요!
MatrixFrog

3
또한 인증이 필요합니다. 위 명령에 다음을 추가하십시오. -u "login : password"
morgoth

2
이 방법이 여전히 효과가 있다고 덧붙이고 싶지만 GitHub가 이미 메시지 # 문제에서 암시 적으로 선택했다면 토론 페이지에 커밋을 두 번 나열하는 부작용이있을 수 있습니다 ( ). 그러나 커밋은 공식 풀 요청에서 한 번만 이루어집니다.
Greg Haskins

3
v3 API로 업데이트 할 수 있습니까? GitHub가 방금 v2 API를 해제했습니다.
Michael Best

1
나는에서 말하는 것처럼 @rsanchezsaez 내 대답은 , 변화 --user "smparkes:password"하는 --user "smparkes"대화 형 암호를 입력하라는 메시지가 표시된다.
Rory O'Kane


10

이 다른 답변cURL ( curl)을 사용하여 GitHub API를 통해 이슈에서 풀 요청을 생성하는 방법을 설명합니다 . 다음은 읽기 쉽고 편집하기 쉬운 명령을 생성하는 HTTPie ( http)를 사용하여 수행하는 방법입니다 .

$ http --auth "<your-GitHub-username>" \
       POST \
       https://api.github.com/repos/<issue-repo-owner>/<issue-repo-name>/pulls \
       issue=<issue-number> head=<your-GitHub-username>:<your-fork-branch-name> base=<issue-repo-branch-name>

그런 다음 메시지가 표시되면 GitHub 비밀번호를 입력하십시오.

설명 된 예

사용자 이름 smparkes 및 비밀번호 hunter2 로 GitHub에 로그인했습니다 . 당신은 보았다 technoweenie 의 REPO 패러데이 , 변경해야 뭔가 생각하고, 그것을 위해 그의 repo에 이슈를 만들어 문제 # 15 . 나중에 다른 사람이 제안한 변경을 한 적이 없으며 직접 변경할 시간도 있습니다. 당신은 포크 패러데이 자신의 계정에 다음 변경 사항을 작성하고 지점의 이름 아래에 포크로 밀어 동시성 . 당신은 technoweenie 가 그 변화를 마스터 에게 가져와야 한다고 생각 합니다.그의 레포 지점. 이 상황에서 이전 호를 풀 요청으로 변환하기 위해 작성하는 명령입니다.

$ http --auth "smparkes" \
       POST \
       https://api.github.com/repos/technoweenie/faraday/pulls \
       issue=15 head=smparkes:synchrony base=master
http: password for smparkes@api.github.com: hunter2

이제 이슈 15 는 풀 요청입니다.


3

github에 2-factor-auth를 사용하는 경우 요청에서 authtoken을 헤더로 제공해야합니다.

curl -u "<your_username>:<your_pw>" \
     --header 'X-GitHub-OTP: <your_authtoken>' \
     --request POST \
     --data '{"issue":"<issue_nr>", "head":"<your_username>:<your_forks_branchname>", "base":"<upstream_branch>"}' \
     https://api.github.com/repos/<upstream_user>/<upstream_repo>/pulls

1
예, 2FA는 여기에 많은 답변이 작동하지 못하게합니다. 필자의 경우 개인 액세스 토큰을 만들어 내 암호 대신 사용하여 작동합니다.
berto

1

Gub 를 사용 하여 문제에 대한 풀 요청을 제출할 수도 있습니다 .

또한 적절한 포크 / 풀 요청 스타일을 사용하는 데 도움이됩니다.

편집 : 2013 년 10 월 5 일

Gub가 이슈 # 123에 대한 풀 요청을 제출하게하려면 다음을 실행해야합니다.

$ gub start 123

이렇게하면 새로운 분기 문제 -123이 만들어집니다. 문제에 대한 작업이 끝나면 다음을 실행하십시오.

$ gub finish

짜잔!

참고 : 저는 Gub gem의 저자입니다.


1

클라이언트 측에서 ( Christian Oudard 답변hub 에서 와 같이) 대신 (2020 년 2 월) 서버 측 에서 수행 할 수 있습니다 (github.com)

"을 참조하십시오 사이드 바에서보기 및 링크 문제와 풀 요청을 "

이제 해당 페이지의 사이드 바를 통해 이슈를 연결하고 요청을 끌어 올 수 있습니다. 연결된 풀 요청이 병합되면 여기에서 연결하면 자동으로 문제가 해결됩니다.

문서 :https://help.github.com/assets/images/help/pull_requests/link-issue-drop-down.png

그리고 그 기능을 가진 검색 API 가 있습니다.

linked:pr검색 한정자를 사용하여 풀 요청 참조를 닫는 리포지토리에서 열려있는 모든 문제를 찾으십시오 .
마찬가지로에 대한 지원 문제가없는 리포지토리에서 모든 풀 요청을 찾습니다 -linked:issue.


0

git-hub 도구를 사용하면 다음과 같이 할 수 있습니다.

$> git hub pull attach 123

이렇게하면 문제 # 123이 풀 요청 # 123으로 변환되므로 문제에 대한 모든 토론이 단일 위치에 유지됩니다.


0

2FA를 사용하도록 설정 한 경우 HTTPie와 함께 토큰 전달을 사용할 수 있습니다.

http POST \
    https://api.github.com/repos/<repo-owner>/<repo-name>/pulls \
    issue=2 head=issue_2 base=master
    "Authorization:token PUTAUTHTOKENHERE"

분기 issue_22를 사용하여 문제 # 2를 풀 요청으로 변환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.