0

소프트웨어 벤더의 기존 소스 코드를 기반으로 소프트웨어 개발을위한 git 리포지토리를 설정해야합니다. 소스 코드가 주기적으로 업데이트되고 있으며, 가장 효과적인 접근법을 찾고 있습니다. 2 가지 작업 모델을 생각해 봤는데, 어느 것이 (또는 다른 하나)가 가장 효과적 일지에 대한 의견을 듣고 싶습니다. 상태. A, B, C.Git 브랜치를 구성하는 방법

소스 코드 저장소/팀 A는 기반 벤더 코드 종료입니다 :

전반적으로, 각각 자신의 별도의 코드 저장소에서 작업 3 개 완전히 독립적 팀이있을 것이다. 소스 코드 저장소/팀 B는 기반 공급 업체 코드가 제 3 자의 확장 프로그램을 종료하는 곳입니다. 소스 코드 저장소/팀 C 설치를 시도하고있는 C 팀. A + B와 자체 확장을 기반으로해야합니다.

저장소 A를 변경, 팀 B에서 사람이 통합 팀 C. 또한 자신에 대한 독립적 인 자료를 만들 수 있습니다

팀 B에 사용할 수 있도록, 자신의 저장소에 그것을 끌어 때마다

(A 팀에서 변경없이 우리가 업데이트됩니다 -

master 
TeamA 
TeamB 
develop 
TeamA 및 TeamB 우리 (팀 C)에 의해 관리됩니다

지점이 :) 그들은 내가 설치 저장소 별도의 지점에 대한 것, 팀 C. 팀 C에 대한

을 위해 제공 할 것이다 언제든지 우리 스스로 A 팀과 B 팀으로부터 코드를 받아 병합하여 개발하십시오.

목표는 TeamA와 TeamB 간의 diff (개발) (그리고 TeamA와 TeamB 간의 차이)를 이해하고 팀 A와 B의 변경 사항을 가장 쉽게 개발할 수 있도록하는 것입니다.

나는에 관한 어떤 차이가 있는지 궁금 경우 구조 다음 I 설정 :

1) 마스터

master 
    TeamA 
    TeamB 
    develop 

또는, 2) 지점의 부모 - 자식 구조를 다음하기에 따라 모든 지점을

master 
    TeamA 
     TeamB 
      develop 

실용적인 차이가 있는지 궁금합니다.

누구나 과거에 비슷한 상황 이었습니까? 어떤 접근 방식을 권하고 싶습니까?

답변

0

Git repo에서 각 분기는 별도로 작동합니다. 따라서 제공된 두 구조는 실제로 다른 구조와 동일하게 작동합니다. 그리고 지부 구조는 팀 (C 팀)에서 작동 할 수 있습니다.

그리고 당신은 또한 repoC에서 면제 TeamATeamB 가지, develop 지점에 직접 repoA 및 repoB에서 변화를 가져올 수 :

git remote add -f teamA <URL for repoA> 
git checkout develop 
#Use git fetch teamA and git fetch teamB when there has new changes on repoA and repoB 
git pull teamA/master --allow-unrelated-histories 
git pull teamB/master --allow-unrelated-histories 
#After making changes and commit changes on develop branch 
git checkout master 
git merge develop 

참고 : 아무리 분기 구조는 당신이 사용하는, 당신은 통지 안 세 repos가 동일한 파일/코드를 포함하므로 충돌을 병합하십시오.

+0

답장을 보내 주셔서 감사합니다.예, 저는 해결해야 할 충돌을 알고 있습니다. 그것은 비즈니스의 일부입니다 :-) 그래서 일반적으로 Git의 부모/자식 분기 뒤에는 병합/검색에 도움이되는 추가 기능이 없습니다. 역사/차이를 통해. –

+0

다른 브랜치에서 브랜치를 생성 (체크 아웃) 할 수 있지만 부모/자식 관계가 아니기 때문에 두 브랜치는 별도로 작업합니다. –

+0

답변으로 문제를 해결하는 데 도움이 되었습니까? 그렇다면 표시 할 수 있습니다. 그리고 비슷한 질문을하는 사람들을 도울 것입니다. –