포크 리포지토리에서 풀 요청을 업데이트하는 방법은 무엇입니까?


592

그래서 먼저 레포를 포크 한 다음 해당 포크 리포지토리에 커밋했습니다. 그런 다음 풀 요청을 열었습니다. 풀 요청에는 내가 원하는 모든 변경 사항이 나열되었습니다.

풀 요청을 검토 한 후 repo 소유자가 수락하기 전에 원하는 변경 사항이 많이있었습니다. 포크에서 변경을 했으므로 이제 풀 요청을 해당 변경으로 업데이트하는 방법은 무엇입니까?



7
@PaulDraper 동의하지 않습니다. 사용자는 이미 풀 요청을 업데이트하는 다양한 방법을 알고 있으며 제시하는 것이 가장 좋습니다. 나는 다른 한편으로는 어떤 방법도 몰랐고 그들의 존재에 대해 물었다. 이 질문의 인기가 보여주는 것처럼 많은 다른 사용자들도 마찬가지입니다.
stevebot

6
나는 인기가 (1) 이것은 정말로 좋은 일반적인 질문이며 (2) 일부 사용자가 대신에 여기에 상처를 입었다는 사실에 기인한다고 생각합니다. 원래 중복 된 것으로 확인 된 경우 다른 질문이 동일한 것으로 확인되어 질문에 답변 한 것입니다.
Paul Draper

답변:


584

당신은 그것을 올바르게했습니다. 풀 요청이 자동으로 업데이트됩니다. 과정은 다음과 같습니다

  1. 오픈 풀 요청
  2. 로컬 리포지토리의 피드백을 기반으로 변경 내용 커밋
  3. 포크의 관련 지점으로 미십시오

풀 요청은 풀 요청 토론의 맨 아래에 새 커밋을 자동으로 추가합니다 (즉, 이미 있습니다, 아래로 스크롤하십시오! ).


73
좋은! 실제 풀 요청을 제외한 모든 곳을 확인하고있었습니다. 그것의 마술, 검은 마술, 나는 그것을 의심하지 않을 것입니다.
stevebot

57
이것은 가지에서 일하는 좋은 이유입니다. 예를 들어, 항상 마스터로 푸시 한 경우 실수로 이전 풀 요청에 추가 할 수 있습니다.
Brian Pan

3
과거에 있었지만 더 이상 그렇지 않은 것 같습니다. 여기에 내가 (만든 끌어 오기 요청의 예 github.com/toopay/bootstrap-markdown/pull/167 분기 자체 (비교) github.com/mhuggins/bootstrap-markdown/commits/... ). 프로세스가 변경된 것 같으므로 더 이상이 작업을 수행하는 방법이 궁금합니다.
Matt Huggins

1
GitHub는 실제로 다음과 같이 말합니다. "ChangeTheWorldProject의 SolveWorldHunger 브랜치로 푸시하여 커밋을 추가하십시오."
flow2k

1
여기서도 동일합니다-메인 리포지토리의 포크 리포지토리에서 변경된 내용이 없습니다. GitHub 버그처럼 보입니다
andrfas

77

GitHub에서 풀 요청을 업데이트하는 것은 기존 브랜치 (풀 요청과 함께 사용)에 원하는 변경 사항을 커밋하는 것만 큼 쉽지만 변경 사항을 단일 커밋으로 스쿼시하려는 경우가 종종 있습니다.

git checkout yourbranch
git rebase -i origin/master

# Edit command names accordingly
  pick   1fc6c95 My pull request
  squash 6b2481b Hack hack - will be discarded
  squash dd1475d Also discarded

git push -f origin yourbranch

... 이제 풀 요청에 단 하나의 커밋이 포함됩니다.


rebasing에 대한 관련 링크 :


2
리베이스 언급에 대한 찬성. 개정 이력에서 노이즈를 제거하는 데 도움이됩니다.
stevebot

+11 (예, rrrrepeating 키를 의도했습니다. git rebase / pick / squash 사용은 훌륭합니다.
javadba

11
이 방법의 단점은 이전 커밋을 제거한다는 것입니다. 즉, 풀 요청 주석에서 주석이 작성되면 손실되고 원래 커밋과 함께 사라집니다.
blowekamp

Bitbucket에서는 풀 요청에서 파일의 "이전 버전"에 대한 주석을 볼 수 있습니다. 커밋을 패치하고 주석으로 전체 역사를 볼 수있는 Gerrit와 같은 것을 보는 것이 좋지만. 되돌아 가서 커밋에 대한 전체 토론을 볼 수있을 때 깔끔한 git history와 traceability를 만듭니다.
사랑

35

풀 요청이 참조하는 브랜치로 푸시하십시오. 풀 요청이 여전히 열려있는 한 추가 된 커밋으로 자동 업데이트됩니다.


14

아래 단계를 사용하여 수행했습니다.

  1. git reset --hard <commit key of the pull request>
  2. 코드를 변경하고 싶습니까?
  3. git add
  4. git commit --amend
  5. git push -f origin <name of the remote branch of pull request>

1
아주 좋습니다.이 방법을 선호합니다! GitHub는 오래된 코드 섹션과 관련 주석을 숨기고 유지합니다. 풀 요청에 여러 개의 커밋이 포함되어 있고 수정이 필요한 커밋이 분기의 끝에없는 경우 "git reset --hard"는 지정된 ID 이후에 커밋 된 모든 변경 사항을 버립니다. 백업을 수동으로 적용했습니다. 그래도 하나 이상의 추가 커밋이 있으면 매우 편리하지 않습니다 ...
Nagev

3

Windows에서 GitHub를 사용하는 경우 :

  1. 로컬로 변경하십시오.
  2. GitHub를 열고 로컬 리포지토리로 전환 한 다음 리포지토리를 두 ​​번 클릭합니다.
  3. 브랜치 (창 상단 근처)를 풀 요청을 생성 한 브랜치 (즉, 비교의 분기점)로 전환하십시오.
  4. 오른쪽에 커밋 주석을 입력하고 로컬 리포지토리에 변경 사항을 커밋하는 옵션이 표시되어야합니다.
  5. 상단의 동기화를 클릭하면 무엇보다도 커밋을 로컬에서 원격 포크로 GitHub에 푸시합니다.
  6. 풀 커밋은 추가 커밋으로 자동 업데이트됩니다. 풀링 된 요청은 포크의 분기와 차이점을 나타 내기 때문입니다. 풀 요청 페이지 (귀하와 다른 사람이 풀 요청에 주석을 달 수있는 페이지)로 이동하면 커밋 탭에 추가 커밋이 있어야합니다.

따라서 직접 변경하기 전에 풀 요청에 적용 할 각 변경 세트에 대한 브랜치를 작성해야합니다. 이렇게하면 끌어 오기 요청을 한 후에 다른 분기를 만들어 이전 끌어 오기 요청에 영향을주지 않고 다른 작업 / 기능 / 버그 수정 작업을 계속할 수 있습니다.

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