2016-09-18 2 views
0

특정 클라이언트 용으로 설계된 관리 패널을 개발했습니다. 이제는 프로젝트 요구 사항에 클라이언트가 아닌 특정 코드가 별도의 git 브랜치으로 추출되어 프로젝트의 새로운 클라이언트 관련 변형의 기초가됩니다.git repo에서 "클라이언트 관련"코드의 "일반"코드를 추출하는 방법은 무엇입니까?

  1. 독립형 지점으로 기존 프로젝트에서 클라이언트 특정 코드를 추출합니다;

    TL 이미 언급 한 바와 같이 DR

    내 목표는,이다.

  2. 앞으로 "Generic"기능/버그 픽스를 일반 분기에 커밋하십시오.
  3. 일반 분기에서 클라이언트 특정 분기로 변경 사항을 병합합니다.

문제는 내가 특정 클라이언트 코드를 추출하면, 그 지점에서 모든 클라이언트 특정 기능을 제거 새로운 커밋을 적용하고 전 분기 (클라이언트 특정 일)에 병합하려고 발생

enter image description here

보시다시피, 문제는 client-branch에 "1"커밋 같은 generic-branch 비으로 바람직 변경 내용을 적용한다.

그래서 질문은 다음과 같습니다. 미래의에서 다른 클라이언트 관련 분기를 분기하기 위해 기존 저장소 에서 일반 기능을 추출하는 올바른 방법은 무엇입니까? 그것에서

이 아닌 클라이언트 특정 코드를 추출하고 (commit-1를) 커밋 만든 후
git checkout client-branch 

git cherry-pick <commit-2> 
+0

구체적인 예를 제공해주십시오. – jthill

+0

@ 질문을 업데이트했고 예, 나는 마스터 일러스트 레이터로 일하고있다.) –

답변

1

, 당신이 필요합니다

+0

고마워요, 이것이 제가 원하는 것입니다. –

0

는 당신이 필요로하는 대신 클라이언트 지점에 일반-분기를 병합이 커밋 체리 - 선택 이 커밋을 클라이언트 특정 분기에 병합합니다. 이 병합 클라이언트 특정 지점의 내용을 변경하지 마십시오, 당신은 ours 병합 전략을 사용한다 :

git checkout client-branch 
git merge -s ours commit-1 

이 병합의 유효 결과가 client-branchgeneric-branch의 병합을 다음을 병합 기지로 commit-1을 고려하는 것입니다.

+0

이렇게하면, 버그 픽스 나 새로운 기능을'generic-branch'에 제출할 때마다 cherry- 매번 한 번씩'client-branch'에 변경 사항을 적용합니다. 이것은 옵션이 아닙니다 –

관련 문제