방금 Github에서 프로젝트를 포크했습니다. 수정을하고 풀 요청을 보냈습니다. 소유자는 내 포크를 기본 프로젝트와 병합 한 후 몇 가지 수정 작업을 수행했습니다. 그래서 지금은 내 포크가 메인 프로젝트로 업데이트되지 않았습니다. 풀 요청을 병합 한 후 수정 한 내용이 없습니다. 메인 프로젝트로 포크를 어떻게 업데이트합니까? 웹 인터페이스에서 그렇게 할 수 있습니까?
감사
방금 Github에서 프로젝트를 포크했습니다. 수정을하고 풀 요청을 보냈습니다. 소유자는 내 포크를 기본 프로젝트와 병합 한 후 몇 가지 수정 작업을 수행했습니다. 그래서 지금은 내 포크가 메인 프로젝트로 업데이트되지 않았습니다. 풀 요청을 병합 한 후 수정 한 내용이 없습니다. 메인 프로젝트로 포크를 어떻게 업데이트합니까? 웹 인터페이스에서 그렇게 할 수 있습니까?
감사
답변:
의도적으로 프로젝트를 포크하면 별도의 리포지토리가 만들어지며 원래 리포지토리가 변경 될 때 업데이트되지 않습니다. 그러나 git
수동으로 업데이트하기가 매우 쉽습니다.
세 번째 저장소 (로컬 사본이면 충분)의 도움이 필요합니다. 3 개의 repos가 있습니다 :
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
그런 다음 원격 브랜치 의 변경 사항을 로컬 리포지토리의 현재 ( ) 브랜치 로 가져옵니다 ( 페치 및 자동 병합 ).master
master
git pull upstream master
이제 로컬 저장소가와 동기화되었습니다 upstream
. 마지막으로 로컬 리포지토리를 Github 포크로 푸시하십시오.
git push origin master
이제 모든 것이 동기화되었습니다.
리모컨을 추가하고 ( GitHub 도움말 참조 ) 새 리모컨에서 당겨야합니다.
git remote add mainProject https://github.com/user/mainProject
git pull mainProject master
하나의 지점 (마스터) 동기화 만 처리하므로 원래 답변 을 보완하기 위해이 답변 을 찾았습니다 . 또한 분기 이후에 분기에서 분기를 만든 경우 분기에서 분기를 만드는 것이 조금 더 복잡합니다.
짧은 대답은 업스트림 저장소의 모든 분기로 포크를 업데이트하려면이 명령을 실행하는 것입니다.
for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done
이것이 수행하지 않는 것은 업스트림에서 삭제 된 분기를 분기에서 제거하는 것입니다. 특히 포크에 분기를 만든 경우이를 자동화 할 수있는 방법이 없습니다.