2014-07-18 7 views
41

나는 일반 응용 프로그램 인 Generic이라는 저장소를 가지고 있습니다. 나는 Acme이라는 저장소에 그것을 포크로 찍었습니다.이 저장소는 Generic 저장소에 저장된 애플리케이션을 빌드하고 Acme Co 브랜딩을 추가합니다.Git 다른 저장소에서 가져 오기

Generic에서 핵심 기능을 변경 한 경우 Generic에 핵심 기능에 대한 최신 변경 사항을 적용하여 Acme 리포지토리를 업데이트하고 싶습니다. 내가 어떻게 그럴 수 있니?

필자가 말할 수있는 한, 필자는 본질적으로 업스트림 저장소의 변경 사항을 현재 포크에 병합하려고합니다.

아무 의미가 있다면, 제가 작성한 개별 응용 프로그램 (예 : Acme)과 함께 개별 응용 프로그램을 만들었 기 때문에이 작업을 수행하려고합니다. 이 작업을 수행하는 더 깨끗한 방법이 있다면 알려주십시오.

답변

62

Acme repo에서 다음 명령을 실행하십시오. Generic repo를 가리키는 upstream이라는 새로운 원격 저장소를 추가합니다.

git remote add upstream https://location/of/generic.git 
그런 다음 명령을 Acme의 현재 지점에 Generic에 대한 변경 사항 병합 할 수 있습니다

:

git pull upstream 

당신이 그냥 자동으로 병합하지 않고 변경 내용을 다운로드 할 경우를 대신 git fetch를 사용 git pull입니다. 당신이 저장소에 밀어하지 않으려면

같은 것을 사용하여 잘못된 URL로 푸시 URL을 설정
git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP" 
힘내 지금 당신이 시도 할 경우 환매 특약을 찾을 수 없다는 당신을 소리 것

upstream (그리고 Rickroll에 대해 유감스럽게 생각하지만, 그것은 내 머리 속으로 튀어 나온 첫 번째 무작위 문자열이었다).

+3

우수 감사합니다. 한 가지 다른 점은 :이 원격 읽기 전용으로 만들 수있는 방법이 있습니까? 그래서 우연히 그것을 끝내지는 않습니까? – Libbux

+1

나는 대답하기 시작했으나 McLovin이 이미 그의 대답을 편집 한 것을 보았다. –

+1

git 2.9 이후에는 --allow-unrelated-histories 플래그를 지정해야합니다. https://stackoverflow.com/a/37938036/3799847을 참조하십시오. –