2012-06-12 3 views
7

나는 프로젝트를 진행하고 있는데 중앙 자식의 repo 있습니다. 이 프로젝트는 다수의 포크에 대한 기준선이되는 해골입니다.힘내 추적 상류

포크에 대한 로컬 작업 리포지토리를 프로젝트의 중심을 원점으로 추적하고 스켈레톤 마스터를 업스트림이라는 별도 분기로 추적하여 체리 마스터가 뼈대에 대한 변경 사항을 선택하도록 추적 할 수 있습니까? 더 나은 방법이 있나요 >> 포크 1 명 했었어요 변경 해골

에서 >> 포크 2에서 포크 해골 >> 해골 했었어요 변경

이 해골을 만듭니다 같아요

나는 나의 작업 흐름과 같이되고 싶어요 내가 설명한 것을하기 위해서?

답변

7

은 "Step 3: Configure remotes"는 GitHub의의 "포크 리포"페이지 (난 당신이 GitHub의 언급하지 않았다 알고 있지만, 여전히 관련)

  • origin는 것을, 포크의 원격 주소 읽기 해당 지역의 클론에서/푸시
  • upstream에 당길 수하는 것은 원래의 repo Skeleton의 원격 주소

그래서 상류 지점 아니다 (당신은 git remote add upstream https://..../Skeleton.git에 추가 할 수 있습니다).

하지만 당신은 git branch와 상류의 repo에서 상류 지점의 원격 추적 브랜치 마스터를해야합니다 로컬 지점, 정의 할 수 있습니다, 그러나

git branch --set-upstream upstream_master upstream/master 

, 당신은 로컬 지점이 필요하지 않습니다를 특히 경우 새로운 커밋을하지는 않을 것입니다. upstream/master으로 마스터를 git fetch upstream과 직접 비교하고, 체리를 먹을 때 upstream/master에서 원하는 것을 선택하십시오. 자식이 해당 파일에 대한 변경 사항을 적용 할 때

파일이 포크 후 및 REBASE 전에 상류에서 제거 된 경우
+0

그게 내가이 질문을하라는 메시지가 그 일을하려고 있었는지의 라인을 따라입니다. 'git branch -set-upstream upstream_master upstream/master' 명령은'git remote add/srv/repos/git/skeleton.git' 명령 바로 뒤에는 작동하지 않습니다. 왜 그런가요? 실수로 문제를 해결하려고했습니다. 나는 정확히 내 마스터 작업 트리에 upstream' 가져 오기 '를 실행 자식 싶어하지만 그 다음 문제를 해결하기 위해 사용하는 것은 나를/마스터 업스트림 원격 추적 브랜치를 추가 할 수 있습니다하지 않았다.나는 원격 지점 upstream/master가 그때까지 나의 레포에 없기 때문에 그것이라고 생각한다. 원격 추가 후 바로 –

+0

? 원격 추적 분기'upstream/master'가 가져 와서 로컬 repo에 넣기 위해서는 먼저'git fetch upstream '가 필요합니다. git fetch는 로컬 파일을 수정하지 않습니다. – VonC

1

당신의 설명에 따르면, 당신은 당신의 포크 것, 즉

initially: 
1 - 2 - 3 <- upstream 
     \- 4 <- fork 

upstream changes: 
1 - 2 - 3 - 5 - 6 <- upstream 
     \- 4 <- fork 

after rebase: 
1 - 2 - 3 - 5 - 6 <- upstream 
       \- 4 <- fork 

을 다음과 같이 상황을 변화시킬

$ git rebase upstream 

를 사용하여이 변경 될 때마다 골격에 포크 리베이스한다 가장 최근 버전의 스켈레톤에서 파생 된 것처럼 보입니다.

이 방법의 단점은 당신이 원하지 않는 경우, 당신은 그냥 포크로 업스트림 (I 생각 체리 - 선택에 필요)을 병합 할 수 없다 ... 포크의 역사를 변경한다는 것입니다.

+0

는 무슨 일이 일어날 것인가? 당신이 파일을 수정하지 않은 경우 –

+0

, 그들은 REBASE 동안 제거 얻을 것이다. 수정 한 경우 수동으로 해결해야하는 충돌이 발생합니다. – Sjlver