2009-11-03 9 views
15

간혹 여러 분기를 한꺼번에 사용하고 있습니다. master, release-1.1 및 experimental이라는 분기가 있다고 가정 해보십시오. 새 파일을 만들거나 실험실에서 변경하고 하나의 변경 사항을 다른 분기에 적용합니다.어떻게 커밋 하나를 병합합니까?

git에서이 작업을 수행 할 수 있습니까? 커밋을 다른 브랜치에 병합하면 git은 자동으로 "빨리 감기"하고 중간에 커밋을 포함합니다. 그러나이 사용 사례를 처리 할 수있는 방법이 있어야합니다.

답변

22

당신이하고 싶은 것을 cherry picking이라고합니다. 당신은 체리 선택할 수 한 다음 명령을 사용하여 커밋 :

$ git cherry-pick <commit hash or name> 

이 현재 지점에 커밋 만을 그에서 변경 사항을 포함합니다. 그러나이 경우 이 새로 작성됩니다. 커밋; 이 새로운 커밋은 체리 선택 커밋 (그리고 심지어 커밋 날짜와 작성자가 동일)과 완전히 똑같은 변경 사항을 가지고 있지만 기술적으로는 커밋이므로 새로운 커밋으로 표시됩니다 (예 : gitk). . 또한 변경 사항을 보려는 각 지점에 대해 체리 피크를 수행해야합니다.

4

오히려 변경하기 전에 를 알아야 솔루션,하지만 불행히도 하나, 최초의 지점 오프 만 (그래서 "주제 지점"라고 함)이 변경 내용을 별도의 지점을 만들거나 초기 커밋 그리고이 분기를이 커밋이 필요한 분기로 병합하십시오.

경우에 따라서는 유지 보수 분기를 변경하고 유지 관리 분기를 안정 분기로 병합 한 다음 안정 분기를 개발 분기에 병합하는 방법이 있습니다.

는 Junio ​​C 하마노 (망할 놈의 메인테이너는) 자신의 블로그에 이것에 대해 쓴 : Resolving conflicts/dependencies between topic branches early

+0

당신이 블로그 항목에 대한 링크가 있나요? 나는 이것이 힘내 기관에서 오는 도움이 될 것이라고 생각한다. –

+0

아마 그 블로그 항목? http://gitster.livejournal.com/27297.html – VonC

+0

체리 따기가 이것보다 더 적절하다고 생각합니다. –

관련 문제