2017-03-03 1 views
0

나는 repo를 분기하고 몇 가지 변경을 가한 다음이를 master 브랜치에 푸시했다. 그런 다음 변경 사항을 가져 와서 마스터에 병합했습니다. 병합 충돌이 많습니다. 나는 그 코드를 어딘가에 고쳤지만, 나는 imp 변경을 놓쳤다. 나는 그 변화를 추진하지도 않았고 나는 그것을 커밋하지도 않았다. 병합을 어떻게 되돌릴 수 있습니까? 포크로 찍은 레포의 커밋에는 오래된 커밋이 있고 레포에는 내 커밋이 있습니다.병합을 되돌리려면?

답변

1

질문을 올바르게 읽은 경우 master에 뭔가를 병합했지만 문제가 발생하여 병합을 취소하고 다시 시작하려고합니다. 이 경우에, 나는 당신이 다음과 같이 도망 갈 수 있다고 생각 : 당신은 아직 아무것도 약속하지 않았기 때문에

git reset --hard HEAD 

이 병합이 가진 유일한 실제 효과는 당신이 당신의 무대 가능성이 파일을 직접 작업하고 있다는 것입니다, 병합에서 "더티"입니다. 위의 명령은 작업 및 스테이지 파일을 병합을 시도하기 전에 HEAD? 료에서 있었던 상태로 재설정합니다. 그러나 지사의 실제 역사는 아직 변경되지 않았으므로 그 점에서 안전합니다.

당신 당신이 커밋 직접에 git rebase를 사용할 수, 커밋 병합의 상단에 지금 다른 작업과 가능성, 병합 노력이 있다면 당신은 당신이이 상황을 처리 할 방법 궁금합니다. Considerthe 다음 다이어그램 : 여기

... A --- B --- C --- F ... master 
    \    /
     --- D --- E ---  feature 

featuremaster에서 갈라져은 A 커밋,하지만 F을 커밋 다시 master로 병합에 합병되었다. 이제 해당 병합 커밋을 제거하려고합니다. 다음과 같이 A을 저지 master을 리베이스 수 :

git rebase <SHA-1 of commit A> 

힘내 A 위에 master에서 모든 커밋을 재생합니다, 그러나 그것은 F에서 일어난 커밋 병합을 무시합니다. 기본 동작은 병합 커밋을 무시하고 주 부모 경로를 뒤 따르는 것이므로이 상황을 처리하는 한 가지 방법입니다.

+0

당신은 록 스타 팀입니다. 세부 설명 주셔서 감사합니다. 나는 많은 것을 배우고있다. – Raaz

관련 문제