2014-10-31 3 views
1

몇 가지 아이디어를 얻고 싶습니다. 나는 3 가지가 있습니다Git에서 다양한 커밋을 선택하는 체리

  • 마스터를
  • 특정
  • 기능이 지점

master는 일반 코드베이스가 내가 구현의 새로운 유형을 만들 나중에 분기하려면 있도록 , 나는 그렇게 쉽게 할 수있다. 하지만 지금은 specific이 내 주요 개발 지점입니다.

그래서 새로운 기능을 테스트하기 위해 specificfeature-branch으로 분기 한 후 feature-branchspecific에 병합했습니다.

그러나 구체화가되는 specific에는 커밋이 있는데, 나는 마스터로 다시 병합하고 싶지 않습니다. 대부분의 코드는 일반적인 변경 사항이며 병합하고 싶습니다.

feature-branch에서 specific으로 30 개의 변경 사항이 병합되었습니다. 30 명 중 약 20 명 정도가 specific에서 master으로 병합하고 싶습니다.

나를 위해 가장 좋은 방법은 무엇입니까?

내가 병합하고자하는 각각의 커밋을 선택해야합니까 master? 그렇다면, 역순으로 (예를 들어 내가 병합하고자하는 가장 오래된 커밋을 얻은 다음 두 번째로 오래된 커밋 - 체리를 모두 master으로 다시 가져 오는 것).

모든 아이디어를 환영합니다. 감사합니다

에 (아직 원격 REPO에 specific을 밀어하지 않은 경우) 그것은 최고

답변

1

다음 specific 지점에서 커밋 (master에 대한 한 후, 구현 고유의 하나)의 순서

  • , interactive rebase.
  • master 만 20 개 첫 커밋 (즉, 빨리 감기 병합됩니다)
    당신은 그 (20 개) 커밋 (git branch tmp SHA1)의 가장 최근에 임시 지점을 생성하고, 해당 분기를 병합 할 수 있습니다 병합 (git checkout master ; git merge tmp)

그런 식으로, 아니 cherry-picking, 커밋의 중복을 의미합니다.


특정 사항이 푸시 된 경우 체리 피킹은 이전 커밋부터 최신 커밋까지 작업 할 수 있습니다. 은 "cherry-pick A..B"형태에서

, AB 세 이상이어야한다. 명령 순서가 잘못된 경우 명령이 자동으로 실패합니다.

+0

안녕하십니까. '특정 '은 이미 불행히도 원격으로 푸시되었습니다 ... – b85411

+0

@ b85411 좋아, 두 시나리오를 모두 포함 할 답변을 편집했습니다. – VonC

관련 문제