웹 인터페이스에서 GitHub 저장소를 어떻게 업데이트합니까?


58

몇 달 전에 다른 프로젝트에서 포크 한 Github 저장소가 있습니다. 몇 달이 지난 지금 원래 마스터 리포지토리가 변경되었습니다. 변경 사항을 반영하여 리포지토리를 업데이트하고 싶습니다. 이것이 Github 웹 인터페이스에서 가능합니까? 아니면 repo를 삭제하고 다시 포크해야합니까?




답변:


43

끌어 오기 요청이 발생하는 방식을 시도하고 되돌릴 수 있습니다.

  1. 당신의 포크로 이동
  2. 풀 요청 발행

    기본적으로 이것은 커밋과 왼쪽 의 원래 리포지토리 ( 기본 리포지토리 )에 대한 변경 사항을 푸시하도록 요청하는 오른쪽 ( head repo ) 의 포크입니다 .

  3. 기본 리포지토리 및 헤드 리포지토리의 드롭 다운을 클릭하고 서로의 리포지토리를 선택하십시오.

    원본 리포지토리가 오른쪽 (푸시 변경 사항이있는 리포지토리)에있는 동안 왼쪽에 (변경 사항을 수락하는) 목록을 표시하려고합니다. 이 이미지에 설명 된대로 :

    그 자체로 끝난 포크

  4. 풀 요청 보내기

    포크에 변경 사항이 없으면 병합을 자동으로 수락 할 수 있어야합니다.

코드가 어떻게 든 충돌하거나 충분히 깨끗하지 않으면 GitHub 웹 인터페이스를 통해 업데이트 할 수 없으며 포크로 다시 밀기 전에 코드를 잡고 시스템의 충돌을 해결해야합니다.


3
이것은 여전히 ​​작동하지만 예 이상적이지 않습니다. 그것은 단지 트릭입니다. 올바른 방법이 아닙니다.
Jake Wilson

3
나쁜 생각을 확인했습니다. 이것은 Github이 원본 커밋에 빈 커밋을 요청하도록 제안하는 방식으로 저장소를 오염시킵니다. 예를 들어 github.com/dthommes/RoboSpring/pull/3를 참조하십시오 .- 공헌 한 후에 동기화하면 이제 Github에서 "dsyncmes / master의 풀 풀 요청 # 1 병합"레이블이 붙은 "포크 동기화"커밋을 푸시하려고합니다. … "
usr-local-ΕΨΗΕΛΩΝ

1
나는 이것이 더 이상 작동하지 않는다고 생각합니다. 조금 이상해 보이지만 간단한 방법은 없습니다.
Toby Allen

1
방금 시도했지만 즉시 작동 하지 않는 것 같습니다 . 포크 중 하나 를 변경 하면 즉시 "변경 사항 비교"페이지가 열립니다. 그러나 "포크 비교"링크를 클릭하면 다른 포크를 변경할 수 있습니다. 아마도 당신은 당신의 답변 에이 효과에 뭔가를 추가 할 수 있습니다.
피터 Mortensen

4
GitHub는 "동기화 포크"버튼을 추가하여 백만 개의 PR을 만들 필요가 없습니다. 지금은 명령 줄을 사용하여 포크를 업데이트하고 있습니다.
Suici Doga

22

더 쉬울거야.

  1. Forked Repo (귀하의 것)로 이동하여 "New pull request"버튼을 클릭하십시오.
  2. 페이지가 열리면 드롭 다운 아래에있는 메시지의 "스위칭베이스"에 대한 작은 링크가 있습니다. 링크를 클릭하십시오.
  3. 이제 자동으로 원본 리포지토리로 연결됩니다. 클릭 끌어 오기 요청 만들기 버튼을 일부는 커밋 메시지를 작성합니다.
  4. 이제 포크 리포지토리로 자동 연결됩니다. 풀 요청 병합병합 확인을 클릭 하여 완료하십시오.

그 녹색 버튼이 무엇인지 명확히해야하며 훌륭한 반응이 될 것입니다 ....
Rodrigo Graça

이것은 2016 년 4 월 현재 최고의 답변입니다.
dr01

7
이 방법의 문제점은 브랜치에 추가 커밋을 추가하므로 실제로 업스트림 리포지토리와 동기화 되지 않는다는 것 입니다.
Mottie

@Mottie 포크가 최신 업스트림 버전 뒤에 있는지 알 수 있고 실제로 변경하지 않고 변경 사항을 확인할 수있는 방법이 있습니까?
Sujay Phadke

1
@SujayPhadke 분기 선택 버튼 아래의 메인 분기 저장소 페이지에서 "이 분기는 xxxx : master 뒤에 xx 커밋입니다."라는 메시지가 표시됩니다. diff를 볼 때, 메시지와 같은 행에 "비교"버튼이 있습니다. 또는이 링크로 이동할 수 있습니다 :https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie

3

원격 업스트림 저장소의 변경 사항으로 분기 된 GitHub 저장소를 업데이트하는 방법


GitHub 도움말의 지침 :

원격 포크 구성

포크 동기화


설정 / 작동 지침 :

Git Bash (Windows) 또는 Linux / Mac 터미널 열기

저장소를 아직 복제하지 않은 경우 개발 폴더의 작업 디렉토리로 변경하고 워크 스테이션에 복제해야합니다.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

워크 스테이션에서 갈래 저장소의 작업 디렉토리로 변경하십시오.

$ cd /user/development/my_forked_repo/

포크에 대해 현재 구성된 원격 저장소를 나열하십시오.

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

포크와 동기화 될 새 원격 업스트림 저장소를 지정하십시오.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

포크에 대해 지정한 새로운 업스트림 저장소를 확인하십시오.

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

업스트림 저장소에서 분기 및 해당 커밋을 가져옵니다. 마스터 커밋은 로컬 브랜치 업스트림 / 마스터에 저장됩니다.

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

포크의 로컬 마스터 브랜치를 확인하십시오.

$ git checkout master

Switched to branch 'master'

업스트림 / 마스터에서 변경 사항을 로컬 마스터 지점으로 병합하십시오. 이는 로컬 변경 사항을 잃지 않고 포크의 마스터 브랜치를 업스트림 리포지토리와 동기화합니다.

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

로컬 지점에 고유 한 커밋이없는 경우 Git은 대신 "빨리 감기"를 수행합니다.

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

커밋을 포크로 푸시해야합니다.

$ git push

아직 인증되지 않은 경우 github 사용자 이름 / 암호를 묻는 메시지가 나타납니다. 인증이 완료되면 새로운 커밋이 포크로 푸시되어 github에 표시됩니다.


5
자세한 답변에 감사하지만 웹 인터페이스를 사용하는 솔루션에 대한 희망이있었습니다.
Toby Allen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.