몇 달 전에 다른 프로젝트에서 포크 한 Github 저장소가 있습니다. 몇 달이 지난 지금 원래 마스터 리포지토리가 변경되었습니다. 변경 사항을 반영하여 리포지토리를 업데이트하고 싶습니다. 이것이 Github 웹 인터페이스에서 가능합니까? 아니면 repo를 삭제하고 다시 포크해야합니까?
몇 달 전에 다른 프로젝트에서 포크 한 Github 저장소가 있습니다. 몇 달이 지난 지금 원래 마스터 리포지토리가 변경되었습니다. 변경 사항을 반영하여 리포지토리를 업데이트하고 싶습니다. 이것이 Github 웹 인터페이스에서 가능합니까? 아니면 repo를 삭제하고 다시 포크해야합니까?
답변:
끌어 오기 요청이 발생하는 방식을 시도하고 되돌릴 수 있습니다.
풀 요청 발행
기본적으로 이것은 커밋과 왼쪽 의 원래 리포지토리 ( 기본 리포지토리 )에 대한 변경 사항을 푸시하도록 요청하는 오른쪽 ( head repo ) 의 포크입니다 .
기본 리포지토리 및 헤드 리포지토리의 드롭 다운을 클릭하고 서로의 리포지토리를 선택하십시오.
원본 리포지토리가 오른쪽 (푸시 변경 사항이있는 리포지토리)에있는 동안 왼쪽에 (변경 사항을 수락하는) 목록을 표시하려고합니다. 이 이미지에 설명 된대로 :
풀 요청 보내기
포크에 변경 사항이 없으면 병합을 자동으로 수락 할 수 있어야합니다.
코드가 어떻게 든 충돌하거나 충분히 깨끗하지 않으면 GitHub 웹 인터페이스를 통해 업데이트 할 수 없으며 포크로 다시 밀기 전에 코드를 잡고 시스템의 충돌을 해결해야합니다.
더 쉬울거야.
https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
원격 업스트림 저장소의 변경 사항으로 분기 된 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에 표시됩니다.