일부 단일 커밋 - 병합뿐만 아니라 git 히스토리에서 특정 커밋 인 C를 삭제하려고합니다.병합이 포함 된 git 내역의 특정 커밋 제거
기록은 다음과 같습니다. 이 예에서는 단일 커밋 - 병합 m6
과 문제가있는 커밋 C
을 제거하려고합니다. 내가 C
및 b6/m6
,이 작품을 절제하는 "자식이 -i 리베이스"를 사용하는 경우
vv
---m0------------------m1---m2---m3---------m4---m5---b6---m7---(...)
\ / \vvvvvvv/ ^^
b0---b1---b2---b3 b4---b5
^^^^^^^
,하지만 난 얻을 :
---m0-------------------m1---m2---m3-------------m4---m5----m6---m7---(...)
\ / \ / \/
b0---b1---b2---b3 b4--(C)--b5 b6
나는 (변경 강조)이 함께 바람하려는
---m0---b0---b1---b2---b3---m1---(...)---
및 기록이 병합됩니다. 나는 전체 구조를 보존하고 싶다.
error: Commit <sha-1 corresponding to m6> is a merge but no -m option was given.
fatal: cherry-pick failed
Could not pick <sha-1 corresponding to m6>
을하고 (나는 C를 제거 할 수 있지만) b6/m6
나는 제거 할 수 없습니다 : 반대로, 나는 --preserve-merges
플래그와 함께 실행하는 경우, 그때 얻을.
원하는 결과를 얻을 수있는 올바른 방법은 무엇입니까? 그게 중요하다면 git 1.8.4를 사용하고있다.
은 (에 StackOverflow에 다른 질문은 내가 그렇게 거의 내가 말할 수있는이 중복 질문이 아닌, 바로이 특정한 경우를 고려하지 않는 것 정독하는 것이 있습니다.)
아래 답변은 본질적으로 대답이 아니지만 의견이 너무 크거나 필요합니다. 이것에 대한 재생산자를 생각해내는 것이 고통 스러울 것이라는 것을 안다. 그러나 만일 당신이 버그가 있다면, 그게 분명히 힘든 사람들을 고치는 데 도움이 될 것이다. :-) – torek