다른 저장소에서 Git 가져 오기


95

Generic일반 응용 프로그램 인 이라는 저장소 가 있습니다. 나는 그것을라는 리포지토리로 포크했다.이 리포지토리 Acme는 애플리케이션 저장 Generic리포지토리를 기반으로 빌드하고 Acme Co 브랜딩을 추가합니다.

의 핵심 기능을 변경하는 경우 .NET의 핵심 기능에 대한 최신 변경 사항으로 저장소 Generic를 업데이트하고 싶습니다 . 어떻게할까요?AcmeGeneric

내가 말할 수있는 한, 나는 본질적으로 업스트림 저장소에서 이루어진 변경 사항을 현재 포크에 병합하려고합니다.

그것이 의미하는 것이 있다면, 나는 일반 응용 프로그램을 구축하고 개별 클라이언트를 위해 브랜드화하기 때문에 이것을 시도하고 있습니다 ( Acme이 예에서 와 같이 ). 더 깨끗한 방법이 있으면 알려주세요.

답변:


135

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

git remote add upstream https://location/of/generic.git

그런 다음 다음 명령 을 사용 Generic하여의 현재 분기에 대한 변경 사항을 병합 할 수 있습니다 Acme.

git pull upstream

자동으로 병합하지 않고 변경 사항 만 다운로드하려면 git fetch대신 사용하십시오.git pull .

해당 저장소로 푸시를 비활성화하려면 다음과 같은 방법을 사용하여 푸시 URL을 잘못된 URL로 설정하십시오.

git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"

힘내려고 upstream하면 리포지토리 를 찾을 수 없다는 소리 가 난다. (그리고 Rickroll에 대해서는 미안하지만 내 머리에 처음으로 튀어 나온 임의의 문자열이었다).


6
훌륭 해요, 고마워요. 다른 한 가지 :이 원격을 읽기 전용으로 만들 수있는 방법이 있습니까? 그래서 실수로 밀어 붙이지 않게 할 수 있습니까?
Libbux

1
나는 대답하기 시작했지만 McLovin은 이미 그것을 포함하기 위해 그의 대답을 편집 한 것을 봅니다.
Frankie Simon

4
git 2.9부터 --allow-unrelated-histories 플래그를 지정해야합니다. 참조 stackoverflow.com/a/37938036/3799847
sfinks_29

5
발행해야합니다git pull --allow-unrelated-histories upstream master
Alec Jacobson

시도해 봤지만 git pull upstream그냥 멈췄어요 ... 어떤 아이디어라도?
Paulo Carvalho

6

다른 저장소에서 특정 분기를 가져 오려면 아래 git 명령을 사용할 수 있습니다.

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