2013-06-28 3 views
10

저는 git에 익숙하지 않아 Visual Studio 용 자식 확장을 사용하고 있습니다. 다른 팀 구성원이 프로젝트를 동기화하려고 할 때 변경 사항을 커밋 할 때 들어오는 커밋을 볼 수 있지만 프로젝트가 동기화되지 않고 아래 오류가 발생합니다.Visual Studio 용 Git Extension

libgit2에서 오류가 발생했습니다. 범주 = 21 (MergeConflict). 2 명 않은 변경 병합을 덮어 것

문제는 어떻게 충돌을 병합 할 수 있다는 것입니다? 이 오류가 발생한 후 충돌을 병합 할 창은 없으며 모든 변경 사항을 커밋했습니다.

답변

6

메시지는 실제 병합 충돌이 아닌 커밋되지 않은 변경 사항입니다. 커밋되지 않은 변경 사항을 병합 또는 사용하지 않는 방법을 배웁니다. 작업을하기 전에 변경 사항을 커밋하거나 숨기십시오. 그런 갈등이 깃발이 꽂혀 있지 않더라도 실제로하고 싶지 않은 것 같습니다.

GE에는 작업 트리 변경 사항을 표시하는 옵션이 있습니다 (거대한 저장소에서 작업하고 정기적으로 수백 개의 변경된 파일이있는 경우를 제외하고 "느림"경고는 무시하십시오). 또한 "Commit"버튼은 카운트를 보여 주며, 병합을 유도 할 때 0이됩니다.

작업의 중간에 다시 생각하고 정당한 이유가 있다면 (정직하게 생각하면) stash을 사용하고 풀 (또는 리베이스) 한 다음 작업을 취소하십시오.

실제 병합 충돌은 시각적 병합 도구를 사용하여 가장 잘 처리되며 tortoisemerge 또는 내가 좋아하는 원본 기어의 diffmerge를 시도 할 수 있습니다. GE와 함께 제공되는 Kdiff3는 주변을 둘러 보는 것이 좋지만 필요한 모든 것이 말 그대로 후보자가 아닌 이상 스스로 해결하는 것은 좋지 않습니다. GE는 자동으로 분쟁 해결에 나선다.

+1

이 문제를 방지하려면 좋은 워크 플로 연습을 선택하십시오. 항상 기능 분기에서 작업 한 다음 swi 병합 준비가 완료되면 동기화 할 마스터 브랜치에 tch를 적용한 다음 마스터가 최신 상태가되면 기능 브랜치를 병합하십시오. 또는 빨리 감기 스타일 워크 플로우를 원할 경우 마스터에 대한 지형지 ​​물 분기를 리베이스하고 병합 할 수 있습니다. 하지만 기본적으로 -이 답변에 명시된 바와 같이. – patthoyts

3

이전 답변은 항상 사실이 아닙니다. 커밋되지 않은 변경 사항이없는 경우에도이 메시지를받을 수 있습니다. 내 동료 & 나는 버그를 고쳤고, 우리 지역 리포지토리에 헌신했다. 나는 그의 것이 더 좋다. 나는 내 변경 사항을 확인하지 않았지만 & 그의 변경 사항을 취소했다.

그동안 그는 (내게 말하지 않고) 변경 사항을 "되돌 리거나"내 변경 사항을 밀어 달라는 요청을 받았습니다. 나는 내 변화를 버렸다고 말했기 때문에 되돌리기를 되돌 렸습니다 (두번의 커밋으로 끝남).

다른 변경 사항 (커밋되지 않은 변경 사항이없는 로컬 레포에 대한 커밋)을 보러 갔을 때 그는 변경 사항의 되돌리기와 다시 되돌리기를 모두 밀어 냈습니다. 위의 메시지가 나타납니다.

해결책은 매우 간단했습니다. 작업 메뉴를 사용하여 명령 프롬프트를 열고 git pull을 발행했습니다. 그게 제대로 작동하고 그의 복귀와 재 복귀와 함께 나를 위해 병합 커밋을 만들었습니다.

예, 그는 (insert incomprehensible git-gibberish here)을 가질 수는 있지만 그는 그렇게하지 않았습니다. 그것은 작동, 우리는 이동합니다. 당신이 최신 이미 "얻는 경우에 http://connect.microsoft.com/VisualStudio/feedbackdetail/view/955248/git-merge-fails-claiming-uncommited-change-would-be-overwritten-by-merge-ssh-mergeconflict

+0

git reset --hard, 저에게 도움이되었습니다. (저의 다른 브랜치 인 VM에서 커밋되지 않은 변경으로 인해 발생했을 수있는 문제 일 수 있습니다.) – learnerplates

1

때때로, git pull이 (... 충분하지 않습니다 :

다음은이 문제에 관한 VS 피드백 항목입니다.")

명령 줄에서 병합을해야 할 수도 있습니다 : 다음,

나를 위해 Visual Studio (2015 년 업데이트 3 년)이 Team Explorer에서, Branches, Actions, Open In Command Prompt :

git merge NameOfBranchBeingMergedFrom 

그런 다음 해당 창을 닫고 나머지 작업 수행 (충돌 등 병합) VS