2014-11-03 2 views
1

에 보관 :두 자식 저장소, 나는 두 개의 저장소를 가지고 그들 중 하나의 경로를 제외해야하지만 동기화

internal_development (원점)
external_development (내선) 내가 코드베이스를 유지해야

그들과 동기화되어, 그 뜻은 - 나는 내부에서 외부로, 그리고 그 반대로도 커밋을해야한다. 그러나 여기서 주목해야 할 것은 internal_development의 매우 큰 부분이 기밀이며 외부 개발 저장소에 병합되어서는 안된다는 것입니다. 자식은 그 일을하기위한 것이 아니라는 것을 알지만, 이것을 할 수있는 방법이 있습니다. 맞습니까?

나는 이런 식으로 그것을 시도 수동으로 원산지/마스터에서 구조를 파일 복사

  • 를 기밀했다 경로 제외. 첫 번째 커밋으로 새로운 베어 리포 지 토리를 설정하십시오.
  • 그런 다음 내부 저장소에서 원격 새로운 내선을 추가하고 실행 : 자식 체크 아웃 -b master_ext 내선/
  • 그런 다음 내부 마스터로 다시 체크 아웃 마스터가 추가 된 새로운 "테스트"파일을하고 최선을 다하고. 내선/마스터에서
  • 체크 아웃은이 명령을 시도 : 그것은 있어야하고 내부 마스터 + 새 파일에서 커밋을 모두 통합
  • "자식이 --no-FF 원산지/마스터 --no 커밋 병합" 비밀.

나는 외부 저장소에 도착해서는 안됩니다 모든 디렉토리에 대한 '자식 초기화 "를 실행 할 수 있지만 내부 GET에서 이전 커밋뿐만 아니라 내부 뽑아 있기 때문에, 나에게 도움이되지 것이며, 그들은 단지 체크 아웃 할 수 이들은 커밋하고 파일을 참조하십시오.

답변

1

internal_development의 매우 큰 부분이 기밀이므로 외부 개발 리포지토리에 병합해서는 안됩니다.

그런 다음 기밀 부분은 자체 저장소에 있어야합니다 (split a Git repo 참조). 다른 솔루션 (기밀 및 비 기밀 부품을 동일한 Repo에 보관)은 너무 위험합니다.

(오른쪽 트리 구조를 다시 필요한 심볼릭 링크처럼)

+0

이것은 아마도 가장 보인다 비 기밀 부분은 원래의 repo에 머물 수 있고, 새로운 비밀의 repo는 submodule로 첫 REPO를 참조 할 수 있습니다 그것에 대해 합리적인 방법. 프로젝트 내의 하위 디렉토리를 관련 내역이 손상되지 않은 상태로 변환 할 수 있습니까? 그리고이 마스터 저장소에서 커밋을 제거 하시겠습니까? – WraithLux

+0

@WraithLux는 https://confluence.atlassian.com/display/BITBUCKET/Split+a+repository+in+two#Splitarepositoryintwo-UsingGittosplit-outadirectory에서 설명합니다. – VonC

관련 문제