2013-11-26 3 views
2

feature/x에 기능을 개발 중입니다. 이 기능을 지금은 master으로 병합해야하며 masterfeature/x으로 병합하면 동기화 상태를 유지해야합니다. feature/x 브랜치는 원격 브랜치로도 존재하므로 rebase는 좋은 옵션이 아닙니다.마스터 (git)에서 기능 사용 안 함

우리는/비활성화 미래의 어느 시점까지 master의 실제 기능을 숨기려. 사실, 나는 master에 커밋 K를 만들 수 있기 때문에 UI에서 숨겨져 있지만 개발 된 기능을 비활성화하지만 기본 메커니즘은 그대로 유지됩니다.

나는이 내가 feature/xmaster까지 병합 할 때 내가 feature/xmaster에서 병합 할 때, 나는 또한 K. 제외한 모든 커밋을받을거야,는 K가 여전히 master에 적용해야 커밋 작업 할 것, 숨겨진 기능 유지. 나는이 기능을 제외하고 작동

git co master 
git commit -am "disable feature x for now" 
    => created commit 12345678 
git co feature/x 
git merge -s ours 12345678 

내가

git co master 
git merge feature/x 

을 수행 할 때 master에서 다시 활성화됩니다

을 시도했습니다

는 그래서 feature/xmaster에서 -s ours와 합병하는 것이하지 않는 것 같다 결과를 두 방법으로 병합합니다. 따라서 feature/x에서 master으로 병합 할 때마다이 기능을 다시 사용하지 않도록 설정해야하며이 사용 불가능한 커밋은 feature/x 등으로 돌아갑니다. 더 좋은 방법이 있습니까?

답변

1

문제는 당신이 정말로 REBASE입니다 무엇을하려고한다는 것입니다. 당신은 당신이하는 각각의 rebase에 대해 신선한 가지를 회전시킬 수 있지만, 얼마나 자주 이것을하는지에 따라 그것은 비실용적 일 수 있습니다.

이것은 추가 단계이지만, 을 사용하지 않도록 설정하는 패치가 포함 된 feature/disable_x (비 원격) 지점을 설정할 수 있습니다. 그런 다음 feature/x을 병합 할 때 disable_x을 리베이스하고 병합하십시오.

+0

정확히 수행 할 작업이 없어도 도움이됩니다. 예를 들어 하나 이상의 추가 사용 중지 단계를 수행하지 않고도 두 방법을 병합 할 수 있습니다. – raimohanska

1

기능 플래그 (또는 feature toggles)를 사용해보십시오.

이렇게하면 코드를 마스터에 병합 할 수 있지만 일부 플래그를 토글 한 후에 만 ​​사용할 수 있습니다 (이 기능을 사용할 수 있음).

장점이 많다 : 만 가능 : 그냥 다시

  • 가 이동 - 라이브 쉽게 점진적 플래그를 전환 :

    • 쉽게 코드 관리
    • 쉽게 대체 뭔가가 잘못되면 (코드는 라이브입니다) 소수의 사용자를위한 기능

    단점 : 이러한 플래그를 관리하려면 몇 가지 코드를 추가해야합니다. 그러나 언어/코딩 플랫폼에 따라 라이브러리는 이미이를 지원할 수 있습니다.

  • +0

    감사. 이것은 실제로 우리가 사용을 끝내기위한 해결책입니다. 버전 제어 기반 접근 방식보다 실제로 더 유연합니다. – raimohanska