개발관련/Git

git cherry-pick "...38c74d is a merge but no -m option was given"

Rateye 2021. 11. 10. 10:45
728x90
반응형
질문 : git cherry-pick은 "… 38c74d는 병합이지만 -m 옵션이 제공되지 않았습니다"라고 말합니다.

마스터 브랜치에서 몇 가지 변경을 수행했으며이를 업스트림으로 가져오고 싶습니다. 내가 다음 커밋을 체리 선택하면. 그러나 나는 git이 말하는 fd9f578에 붙어 있습니다.

$ git cherry-pick fd9f578
fatal: Commit fd9f57850f6b94b7906e5bbe51a0d75bf638c74d is a merge but no -m option was given.

git은 나에게 말하려는 것이 무엇이며 여기에서 사용하기에 적합한 것을 체리 선택합니까? 마스터 브랜치에는 업스트림 브랜치에서 수정 된 파일에 대한 변경 사항이 포함되어 있으므로 병합 충돌이있을 것이라고 확신하지만 정리하기에는 그리 나쁘지 않습니다. 어디에서 어떤 변경이 필요한지 알고 있습니다.

이것이 내가 업스트림으로 가져오고 싶은 커밋입니다.

e7d4cff added some comments...
23e6d2a moved static strings...
44cc65a incorporated test ...
40b83d5 whoops delete whitspace...
24f8a50 implemented global.c...
43651c3 cleaned up ...
068b2fe cleaned up version.c ...
fd9f578 Merge branch 'master' of ssh://extgit/git/sessions_common
4172caa cleaned up comments in sessions.c ...
답변

체리 픽이 작동하는 방식은 변경 세트가 나타내는 diff (해당 지점의 작업 트리와 부모의 작업 트리 간의 차이)를 가져와 현재 분기에 적용하는 것입니다.

따라서 커밋에 두 개 이상의 상위가있는 경우 두 개 이상의 diff도 나타냅니다. 어떤 것이 적용되어야합니까?

두 부모와 fd9f578 체리를 선택하려고합니다. -m 옵션을 사용하여 diff를 계산할 대상을 cherry-pick 명령에 알려야합니다. 예를 들어 git cherry-pick -m 1 fd9f578 은 부모 1을 기본으로 사용합니다.

특정 상황에 대해 확실히 말할 수는 없지만 git cherry-pick git merge 사용하는 것이 좋습니다. 당신이 병합 커밋 벚꽃 선택할 때, 당신이 지정하지 않은 부모에 모든 변경 사항 붕괴 -m 하나의 커밋으로합니다. 당신은 그들의 모든 역사를 잃고 그들의 모든 차이점을 함께 뭉칩니다. 당신의 전화.

출처 : https://stackoverflow.com/questions/9229301/git-cherry-pick-says-38c74d-is-a-merge-but-no-m-option-was-given
728x90
반응형