2011-12-28 1 views
4

우리는 웹 사이트의 주요 개정 작업을하고 있습니다. 수정 된 사이트의 모든 작업은 얼마 전에 마스터에서 분기 된 git 브랜치 (2.0이라고 함)에서 수행되고 있습니다. 길을 따라 가면서 사소한 변화와 중요한 변화 모두를 마스터하기 위해이 변경 사항을 2.0으로 병합하고 싶습니다.힘내 : 주요 버전 변경을위한 조각 별 병합 접근법?

그러나 하나의 큰 병합으로 처리하는 것은 다루기가 힘들어 보이며 변경 사항 중 일부는 병합되지만 그 중 일부는 2.0에 더 이상 존재하지 않는 코드가 포함되어 있으며 기본적으로 2.0의 새로운 기능을 다시 구현해야합니다. 병합 후 해결되지 않은 충돌이있는 한 이러한 기능을 수정하는 것은 상당히 어려울 수 있습니다. 우리는 cherry-pick을 사용하여 마스터로부터의 변경 사항만을 가져오고, 수동으로 주요 변경 사항을 다시 병합하면서 훌륭하게 병합 할 것을 고려했지만, 2.0의 모든 변경 사항을 병합하려는 경우 문제가 발생할 것입니다. 석사.

이상적으로는 master에서 2.0으로 조각 별 병합을 수행 할 수 있습니다. 특정 커밋까지 보조 커밋 그룹을 병합 한 다음 단일 커밋을 병합하고 특정 새로운 기능을 수동으로 다시 구현 한 다음 다른 시리즈를 수동으로 다시 구현합니다. 결국 마스터는 완전히 2.0으로 병합됩니다. 이 상황에 대한 좋은 접근 방법입니까? 그렇다면 어떻게하면 가장 최근의 마스터 커밋까지 진행되는 것이 아니라 도중에 머지 할 것인가? 아니면 제가 취해야 할 더 나은 접근법이 있습니까?

답변

2

지점 이름이 아닌 커밋 해시를 참조하여 분기를 한꺼번에 병합 할 수 있습니다. 그래서 당신은 master 줄에 커밋 특정까지 병합 할 말 -의 그것을 말할 수 있도록 abcd1234 - 당신은 단순히 당신의 2.0 지점에 도착하고 실행할 수 있습니다, 당신은 다음과 같은 많은 취할 수

git merge abcd1234 

이 방법을 사용하거나 당신이 좋아하는 한 번에 적은 커밋. 충돌이 발생하면 즉시 충돌을 해결할 수 있습니다. 당신은 당신이 전적으로 귀하의 지점에 존재하기 때문에 완전히 더 이상 사용되지 않는 코드와 관련된 알고 master 분기에 변경이있는 경우

, 당신은 실행할 수 있습니다 :이 병합을 만듭니다

git merge --strategy=ours bcde2345 

master에서 변경 내용을 커밋하지만 트리 내용을 2.0에서 변경하지 않으므로 실제로 아무것도 수행하지 않고 커밋이 병합 된 것으로 표시됩니다.

관련 문제