2014-02-13 4 views
0

프로젝트에 두 개의 자식 브랜치, masterdev이 있습니다. 어제 대화식 스쿼시 커밋에 git rebase을 사용하는 방법을 배우고있었습니다. 내 master 분기를 뭉개지고 이제는 단지 몇 개의 커밋 만 포함됩니다. 오늘 나는 내 dev 브랜치 (나는을 스쿼시하기 전에 분기했다.)에서이 dev 브랜치에 커밋을했다. 이제 내 dev 분기를 내 엉망진창 master에 병합하고 싶습니다. 그것은 어리석은 짓 이었지만, 나는 이것이 잘못된 행동 이었다는 것을 알고있었습니다.스쿼시 마스터가 다른 브랜치를 병합해야합니다.

dev 분기를 squashed master으로 병합하려면 어떻게해야합니까? 이 일을 할 수있는 방법이 있습니까?

+0

왜 'git merge master'가 좋을까요? 당신이 부숴 버린 커밋을 다시 소개하고 싶지 않기 때문입니까? – gturri

+0

무엇이 당신을 방해합니까? dev는 더 이상 존재하지 않는 커밋에서 분기 되었습니까? 당신은'git checkout master; 자식 병합 dev에'만약 당신이 정말로하고 싶어. –

+0

나는 @ gturri/@ PaulHicks가 제안한 것을 시도했다. 그러나 엄청난 수의 병합 충돌이 발생합니다. 어쨌든 dev에 마스터를 병합 할 수 있습니까?하지만 모든 dev 변경을 유지하여 병합 충돌이 없습니까? – turtle

답변

0

devmaster에서 해제 된 것으로 가정하고 스쿼시의 영향을받습니다. 그렇지 않으면 "부 자연스러운"병합 충돌이 없어야합니다.

당신이 실제로 그 처리하지 않고 원하는 것을 할 수있는 내가 생각할 수있는 방법은 두 가지가 있습니다 병합 충돌 :

  1. 는 당신이 master에 한 부수 취소합니다. master의 프리 스쿼시 상태는 여전히 저장소에 남아있을 가능성이 큽니다. git reflog을 찾아서 git reset을 사용하여 master을 재설정하십시오. 스쿼시 후 master에 추가 커밋을했다면 복원 된 mastergit cherry-pick으로 가져올 수 있습니다. 벌써 눌려진 master을 누르고 다른 사람들이 사용하고 있다면이 옵션은 실행 가능하지 않을 수 있습니다.

  2. git cherry-pickdevmaster에 추가 커밋 한 다음 병합 불가능한 dev 분기를 삭제하십시오. 이 옵션은 이미 dev을 (를) 푸시하고 다른 사람들이 사용중인 경우 실행되지 않을 수 있습니다.

+0

도움을 주셔서 감사합니다. 나는 체리 피클을 선택하려고했는데, 'git cherry-pick'을 시도했지만,'902217c를 적용 할 수 없음 ','힌트 : 충돌을 해결 한 후에 수정 된 경로를 표시하십시오. '라는 오류 메시지가 나타납니다. 이 문제를 어떻게 해결할 수 있는지 알고 있습니까? – turtle