답변:
이 git cherry-pick <commit>
명령을 사용하면 분기에 관계없이 단일 커밋을 수행하고 기본적으로 작업 분기에서 리밋 할 수 있습니다.
Pro Git 책의 5 장 에서는 다이어그램과 함께 완성 할 수있는 것보다 더 잘 설명합니다 . ( 저음에 관한 장도 잘 읽습니다.)
마지막으로, 다른 SO 질문에서 체리 따기 대 병합 대 rebasing에 대한 좋은 의견 이 있습니다 .
A
이 분기 되었다고 말하고 master
자식 커밋을 B
통해 작업을 수행하십시오 E
. E
에서 한 줄만 추가했다고 가정 해 보겠습니다 D
. 당신이 경우 git cherry-pick E
에 master
, 그것을 적용됩니까 모두 에서 변경을 A
통해 E
에 master
지점, 또는 그것을 않습니다 만 에서 변경 사항을 적용 D
하는 E
, 즉, 그것은에 해당 한 줄을 추가 master
? 사건이 전자 인 경우 후자를 어떻게 달성합니까? (수동으로 복사 및 붙여 넣기 제외)
출처 : https://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Integrating-Contributed-Work
도입 된 작품을 한 지점에서 다른 지점으로 옮기는 다른 방법은 체리 픽을하는 것입니다. Git의 체리 픽은 단일 커밋에 대한 리베이스와 같습니다. 커밋에 도입 된 패치를 가져 와서 현재있는 지점에 다시 적용하려고합니다. 토픽 브랜치에 많은 커밋이 있고 그 중 하나만 통합하려는 경우 또는 토픽 브랜치에 하나의 커밋 만 있고 리베이스를 실행하는 대신 체리 픽을 선호하는 경우에 유용합니다. 예를 들어, 다음과 같은 프로젝트가 있다고 가정하십시오.
커밋 e43a6을 마스터 브랜치로 가져 오려면 다음을 실행하십시오.
$ git cherry-pick e43a6
Finished one cherry-pick.
[master]: created a0a41a9: "More friendly message when locking the index fails."
3 files changed, 17 insertions(+), 3 deletions(-)
이는 e43a6에 도입 된 것과 동일한 변경 사항을 가져 오지만 적용 날짜가 다르기 때문에 새로운 커밋 SHA-1 값을 얻게됩니다. 이제 당신의 역사는 다음과 같습니다 :
이제 토픽 브랜치를 제거하고 원하지 않는 커밋을 제거 할 수 있습니다.