원본에서 포크를 다시 동기화하는 방법


33

방금 Github에서 프로젝트를 포크했습니다. 수정을하고 풀 요청을 보냈습니다. 소유자는 내 포크를 기본 프로젝트와 병합 한 후 몇 가지 수정 작업을 수행했습니다. 그래서 지금은 내 포크가 메인 프로젝트로 업데이트되지 않았습니다. 풀 요청을 병합 한 후 수정 한 내용이 없습니다. 메인 프로젝트로 포크를 어떻게 업데이트합니까? 웹 인터페이스에서 그렇게 할 수 있습니까?

감사


나는 간단한 지시를 씁니다. 여기에서 체크 아웃 : webapps.stackexchange.com/a/58140/63016
Youngjae

2
잘하는 공식 문서가 지금있다 : help.github.com/articles/syncing-a-fork은
앙드레 Miras

답변:


36

의도적으로 프로젝트를 포크하면 별도의 리포지토리가 만들어지며 원래 리포지토리가 변경 될 때 업데이트되지 않습니다. 그러나 git수동으로 업데이트하기가 매우 쉽습니다.

세 번째 저장소 (로컬 사본이면 충분)의 도움이 필요합니다. 3 개의 repos가 있습니다 :

  • "업스트림": Github의 업스트림 프로젝트 저장소.
  • "Origin": Github의 포크 저장소
  • "로컬": 컴퓨터의 로컬 저장소. 를 사용하여 Fork를 복제하여 만든 것으로 가정 git clone git@github.com:your-username/projectname.git하고 모든 사람이 branch를 사용하고 있다고 가정하겠습니다 master.

현재 "Origin"과 "Local"이 동일한 상태에 있고 "Upstream"이 1 개 이상의 커밋 (병합 및 후속 변경)보다 앞서 있다고 가정합니다.

먼저 업스트림 프로젝트를 Git 리모컨 으로 추가하십시오 .

git remote add upstream https://github.com/upstream-username/projectname.git

그런 다음 원격 브랜치 의 변경 사항을 로컬 리포지토리의 현재 ( ) 브랜치 로 가져옵니다 ( 페치 및 자동 병합 ).mastermaster

git pull upstream master

이제 로컬 저장소가와 동기화되었습니다 upstream. 마지막으로 로컬 리포지토리를 Github 포크로 푸시하십시오.

git push origin master

이제 모든 것이 동기화되었습니다.


2
고마워요 .. 웹 인터페이스에서는
불가능한

1
이것은 실제로 웹 인터페이스에서 가능합니다 : webapps.stackexchange.com/a/31010/10390
thSoft

유하! 나는이 명백한 정보를 찾으려고 머리를 찢어 버렸다. 공유해 주셔서 감사합니다!
pepoluan

...하지만 저장소 오염으로 재 동기화가 웹을 통해 최선의 선택이 아니라고 증명, 또한 대답의 의견을 살펴 보시기 바랍니다
USR-로컬 ΕΨΗΕΛΩΝ

풀링 후 "이미 최신"이라고 말하면 어떻게해야합니까? (하나의 하위 디렉토리에 모두 변경된 파일이 있으며 다른 파일과 차이가 없어야합니다.)
roberto tomás

1

리모컨을 추가하고 ( GitHub 도움말 참조 ) 새 리모컨에서 당겨야합니다.

git remote add mainProject https://github.com/user/mainProject
git pull mainProject master

0

하나의 지점 (마스터) 동기화 만 처리하므로 원래 답변 을 보완하기 위해이 답변 을 찾았습니다 . 또한 분기 이후에 분기에서 분기를 만든 경우 분기에서 분기를 만드는 것이 조금 더 복잡합니다.

짧은 대답은 업스트림 저장소의 모든 분기로 포크를 업데이트하려면이 명령을 실행하는 것입니다.

for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done

이것이 수행하지 않는 것은 업스트림에서 삭제 된 분기를 분기에서 제거하는 것입니다. 특히 포크에 분기를 만든 경우이를 자동화 할 수있는 방법이 없습니다.

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