개발자가 실수로 병합에 실패하여 빈 병합 커밋을 푸시하는 문제가 있습니다. 빈 Git 병합 제거 된 커밋
develop ----A----------------------------------F------------------I
\ / /
feature1 B----------------C----------------------G---------H
\ /
feature2 ------------------------D---------E-----------------------
가 분기
feature1
가
develop
지점에 점
A
에서 만들어 졌음을 말해 : 아래 그림을 참조하십시오. 포인트
C
에서,
feature1
은
feature2
으로 통합되었습니다. 그러나 병합이 잘못되어
feature1
(변경 :
B
및
C
)의 모든 변경을 효과적으로 거부 한 빈 커밋 인 경우 병합 커밋 인
D
이 잘못 커밋되었습니다.
점 E
에서, feature2
은 develop
으로 합병되었다. 마지막으로 H
지점에서 G
및 H
을 가져 오려면 feature1
을 develop
에 병합했습니다.
그러나, develop
이 C
뿐만 아니라 G
및 H
을 변경 사항이 B
것이다 지점 I
에 예상된다. 그러나, 그들이 병합시 거부되었으므로 나는 C -> D
이라고 믿습니다.
실제 시나리오에서 잘못된 병합 이후 여러 분기에서 많은 커밋과 병합이 발생했음을 상기하면서이 시나리오를 수정하는 간단한 방법이 있습니까? 나는 C
포인트에서 중복 develop
브랜치를 생성하고 리베이스 (rebase)와 체리 피킹 (cherry-picking)의 조합을 사용하여이 작업을 수행하고 있습니다. 그러나 이것은 매우 힘든 일이 될 것이므로 상황을 신속하고 안전하게 안전하게 해결할 수있는 방법이 많이 있습니다.
당신은이 커밋이 :
뭔가처럼단계가 있어야한다 (즉, 잘못된
D
병합뿐만 아니라B
및C
하지만 마지막A
에feature2
알려진 커밋에서도develop
역사를 되돌아 주) 당신의 다이어그램에서'G'라고 라벨링되었지만 그들은 다른 것처럼 보입니다. 그 사람은'F'라고 생각 하나? – torek@torek 네, 맞습니다. 결정된. – Dunnie
당신의 계획이 옳은 길이라고 생각합니다.'git rebase'는'git merge'가 * new * (must-merge) 커밋이라고 생각할 커밋을 복사 할 수 있도록 특별히'-f' /'--no-ff'를 가지고 있습니다. 과거에는 충분히 일종의 재 작업 (체리 선택 또는 시간 병합)에 직면하게됩니다. – torek