2012-03-13 3 views
6

나는 내 분기를 마스터에 병합하고 푸시하여 모든 것이 잘되었다고 생각했습니다. 코드에 문제가 있음이 드러났습니다. 병합 커밋 또는 전체 분기 중 어느 것이 더 적절한 방법으로 되돌리려면 다른 사람이 내 병합이 발생하지 않은 것처럼 쉽게 계속 작업 할 수 있기를 바랍니다.나쁜 분기 병합 되돌리기

그런 다음 지점을 수정하고 다시 병합하려고합니다. 읽기 man git-revert은 -m을 사용하여 전체 분기를 되돌릴 경우 다시 병합 할 수 있음을 제안합니다.

답변

6

그냥 커밋 이전에 머리를 재설정 : 당신이 당신의 결함이 병합을 밀거나하지 않으면 당신은 당신의 질문에 명시하지 않는

git reset --hard HEAD^ 

를, 그래서이 사실 인 경우에 당신 때문에 (--force으로 추진해야한다 마스터 브랜치에서 히스토리를 다시 작성).

결함이있는 커밋을 기반으로 작업을 수행하는 경우 기록을 다시 작성하면 다른 개발자가 문제를 일으킬 수 있습니다. 이 경우 당신이 고려하는 것이 좋습니다 :

git revert HEAD 

그러나,이 새로운는 그 반대를 수행 커밋이 만들어집니다 지금까지 그 HEAD 포인트를 커밋과 저장소를 더러운 것입니다. 재설정은 두 가지 커밋을 없애기 때문에 가장 좋습니다. 하나는 오류가 있고 하나는 오류를 보완하기 때문입니다.

+0

미안, 내가 이미 밀 었다고 언급 했어야했다. HEAD를 정확히 되 돌리는 것은 무엇입니까? "병합되지 않은"커밋을 만들어 HEAD에서 내 지사가 커밋되지 않은 것처럼 보일 것입니다. 그렇지 않은 경우에도 기록이 표시됩니다. – Letharion

+0

정확히. 히스토리는 잘못된 병합 커밋을 표시하고 잘못된 커밋을 무효화하는 또 다른 커밋의 맨 위에 표시합니다. 그냥 시도해보십시오. "git reset --hard HEAD ^";)로 언제든지 실행 취소 할 수 있습니다. – ralphtheninja