2016-10-12 3 views
2

git subtree에 로컬 변경 내용을 만들고 하위 트리의 repo에있는 분기에이 변경 내용을 적용하여 변경 내용을 병합하도록 끌어 오기 요청을 만들 수 있습니다. 서브 트리의 master에 해당 분기가 있습니까?끌어 오기 요청에 대해 git 하위 트리에서 분기로 변경 내용을 푸시

두 개의 리포즈 (projectprotocols)가 있는데, 둘 다 내 제어하에 있다고 가정합니다.

1 단계 : project의 repo에 subtreeprotocols를 추가

$ git remote add protocols [email protected]:corp/protocols.git 

$ git remote 
origin 
protocols 

$ git subtree add --prefix=protocols protocols master --squash 
... 
From bitbucket.org:corp/protocols 
* branch   master  -> FETCH_HEAD 
* [new branch]  master  -> protocols/master 
Added dir 'protocols' 

2 단계 : 구성하는 protocols 하위 트리에있는 파일에 project의 repo에서 일부 변경

$ cd protocols 
$ echo "foo" > some_file 
$ git commit -a -m "added foo" 

3 단계 :에 지점을 만듭니다.내 로컬 변경 사항을 project/protocols 하위 트리에서 해당 지점으로 푸시

??

나는 나의 subtree 변경이 성공적으로 원격 protocols의 repo에 지점에 밀려 일단

, 나는 다음 해당 병합 끌어 오기 요청을 만들 수 있습니다 ... 최선 이것을 달성하는 방법에 관해서는 확실 해요 protocolsmaster으로 변경됩니다.

질문 :

  • 나는 protocols의 로컬 복사본을 가지고있다. 해당 저장소로 변경하고 분기를 만든 다음 project으로 다시 변경하고 subtree 변경 사항을 내 로컬 protocols 저장소로 푸시합니까?

  • 나는 subtree지역protocols의 repo에 (아직 창조되지 현재) 새로운 지점에 직접 을 변경 밀어 수 있습니까?

  • 나는 밀어 수있는 원격protocols의 repo에 (의 아직 창조되지 않은) 직접 새 지점에 subtree 변경 ?

  • 권장되는 워크 플로입니까?

답변

3

를 지정하여 프로토콜의 repo에 지점을 만들고 단일 명령, subtree push으로 당신은 그것을 달성 할 수

해당 분기에 프로젝트/프로토콜 하위 트리에서 내 로컬 변경을 밀어 새로운 원격 지점 :

$ git subtree push --prefix=protocols protocols feature 

이렇게하면 새 분기 인 feature이 원격 저장소 protocols

이제 feature 브랜치를 master 브랜치로 병합하기위한 풀 요청을 생성 할 수 있습니다. 분기가 다시 통합되면

, 당신은 병합 후이 다른 생성됩니다 pull

$ git subtree pull --prefix=protocols protocols master --squash 

--squash와 하나로 숙청 protocols REPO의 모든 변화에 커밋 사용하여 하위 트리를 업데이트 할 수 있습니다

참고가이 방법에 약간의 특질이며, 그 지금 protocols의 repo에 대한 변경 사항을 포함하여 project의 repo에 두 개의 커밋이있을 것입니다 귀하의 project의 repo에 병합 커밋합니다.

  • 원래 project REPO의 protocols 하위 트리
  • 에서 만들어진 커밋 내가 명시 적으로 '자식을 사용
+0

(--squash가 사용 된 가정, 다른 프로토콜 변화에 일반적으로 함께) 후속 하위 트리 풀에 의해 만들어진 커밋 subtree split'에 이어'git push '명령을 실행하여 서브 트리의 원래 저장소에 저장합니다. 이것은 "훌륭하게"작동하지만, 마스터에 병합 할 수없는 고아 지점을 가져 왔으므로 제안대로 "현재 풀 요청을 작성할 수 없습니다". 내가 뭘 놓쳤는가? 감사! – yoyo

+0

@yoyo 명시 적으로 '하위 트리 분할'을 사용한 적이 없습니다. 두려워서 도움이되지 않습니다. 미안 해요! –