2008-10-24 2 views
9

브랜치 B가 브랜치 A의 토픽 브랜치이고 브랜치 C에서 이러한 변경 사항을 원한다고 가정 해 봅시다. 브랜치 A와 브랜치 B의 분기 커미트를 체리 선택하면 무엇을 의미합니까? 기음?Cherry-pick a merge

예를 들어, -m 플래그를 사용하여 브랜치 A의 이전 HEAD를 지정하여 브랜치 C에 병합을 선택하면 "체리 선택 컷 커밋 트리와 이전 HEAD 사이의 차이점 가져 오기 브랜치 A를 브랜치 C에 적용 하시겠습니까? "

이 방법을 사용하는 데 어려움이 있습니까? (? 그것과 같은 예를 들어겠습니까 지점 C 모양은 더 변화가 지점 B에서 단순히 커밋보다 적용 할 것인가 A와 B를 분기 병합이야?)

답변

10

나는 보통이 작업을 수행하는 방법을 git rebase을 사용하고 있습니다 :

git rebase --onto C A B 

이것은 A와 B 사이의 차이점을 취하여 C 지점에 적용합니다. 보너스로, B 지점에서 이미 동일한 텍스트 변경을 수행하는 A와 B 사이의 커밋을 건너 뛰게됩니다.

업데이트 : 주석에서 언급 한 경우에는 Git이 과거 기록을 덮어 쓰지 않는다는 것을 기억하십시오. 따라서 위의 rebase를 수행 한 후에도 rebase 전에 B가 사용했던 커밋에서 새로운 브랜치 헤드를 다시 만들 수 있습니다. 불행히도 저는이 시간에 그렇게하는 간단한 방법을 생각할 수 없습니다. 미안해 더 도움이되지 않을거야, 아마도 다른 누군가가 쉬운 길을 찾아 낼거야!

+0

죄송합니다. 브랜치 B의 변경 사항을 A와 C 모두에 적용하고 싶었습니다. 리베이스하면 B의 변경 사항이 C와 쉽게 병합되지만, 이제는 C가 내가 그 변화를 A에서 할 수있는 일은 뭐니? – Readonly

+0

질문을 제기 할 때 불쌍한 지사 이름을 선택해서 죄송합니다. ( – Readonly