VS Code에서 병합 충돌 해결
병합 충돌은 Git이 서로 다른 브랜치의 변경 사항을 자동으로 결합할 수 없을 때 발생합니다. VS Code는 이러한 충돌을 효율적으로 식별하고 해결하는 데 도움이 되는 여러 도구를 제공합니다.
Visual Studio Code에서 인라인 편집기 액션, 3방향 병합 편집기, AI 기반 해결을 사용하여 병합 충돌을 해결하는 방법을 알아보세요.
병합 충돌 이해하기
병합 충돌은 Git이 자동으로 해결할 수 없는 경쟁 변경 사항을 발견할 때 발생합니다. 일반적인 시나리오는 다음과 같습니다.
- 두 브랜치에서 파일의 동일한 줄을 수정하는 경우
- 한 브랜치에서 파일을 삭제하고 다른 브랜치에서 해당 파일을 수정하는 경우
- 두 브랜치에서 동일한 위치에 다른 내용을 추가하는 경우
충돌하는 변경 사항이 포함된 커밋을 병합, 리베이스, 풀 또는 체리픽하려고 시도하면 Git은 작업을 일시 중지하고 수동으로 해결해야 하는 충돌을 표시합니다.
개발 작업을 구성하고 병합 충돌을 최소화하기 위해 브랜치 생성 및 관리에 대해 자세히 알아보세요.
VS Code에서 충돌 인식하기
병합 충돌이 발생하면 VS Code는 이를 식별하고 해결하는 데 도움이 되는 여러 시각적 표시기를 제공합니다. 충돌이 있는 파일은 소스 제어 보기에서 병합 변경 사항 섹션 아래에 표시됩니다.
편집기 충돌 마커
충돌이 있는 파일을 열면 VS Code가 다음 마커로 충돌 부분을 강조 표시합니다.
<<<<<<< HEAD(또는 현재 브랜치 이름): 현재 브랜치의 변경 사항 시작을 표시합니다.=======: 두 충돌 버전을 구분합니다.>>>>>>> branch-name: 들어오는 브랜치의 변경 사항 끝을 표시합니다.

CodeLens 액션
각 충돌 위에서 VS Code는 충돌을 신속하게 해결할 수 있는 CodeLens 액션을 표시합니다.
- 현재 변경 내용 수락: 현재 브랜치의 버전만 유지합니다.
- 들어오는 변경 내용 수락: 들어오는 브랜치의 버전만 유지합니다.
- 두 변경 내용 모두 수락: 두 버전을 차례대로 유지합니다.
- 변경 내용 비교: diff 보기를 열어 변경 내용을 나란히 비교합니다.
인라인 액션을 사용하여 충돌 해결하기
간단한 충돌의 경우 CodeLens 액션을 사용하여 편집기에서 직접 해결할 수 있습니다.
-
소스 제어 보기에서 충돌이 있는 파일 열기
-
충돌 마커로 표시된 충돌 부분 검토
-
충돌 위에서 CodeLens 액션 중 하나 선택
- 현재 버전을 유지하려면 **현재 변경 내용 수락**을 선택합니다.
- 들어오는 버전을 유지하려면 **들어오는 변경 내용 수락**을 선택합니다.
- 두 버전을 모두 유지하려면 **두 변경 내용 모두 수락**을 선택합니다.
-
파일의 각 충돌에 대해 반복
-
모든 충돌이 해결되면 파일 저장
파일의 충돌을 해결한 후 충돌 마커가 사라지며, 파일을 스테이징하여 소스 제어 보기의 스테이징된 변경 사항 섹션으로 이동할 수 있습니다. 그런 다음 변경 내용을 커밋할 수 있습니다.
두 변경 사항의 일부를 결합해야 하는 더 복잡한 충돌의 경우 파일을 수동으로 편집할 수 있습니다. 충돌 마커(<<<<<<<, =======, >>>>>>>)를 삭제하고 내용을 편집하여 원하는 결과를 만듭니다.
3방향 병합 편집기 사용하기
더 복잡한 충돌이 있거나 모든 변경 사항을 나란히 보고 싶을 때는 3방향 병합 편집기를 사용합니다. 이 편집기는 세 개의 패널을 제공하는 포괄적인 보기를 제공합니다.
- 들어오는 (왼쪽): 병합되는 브랜치의 변경 사항
- 현재 (오른쪽): 현재 브랜치의 변경 사항
- 결과 (아래): 저장될 병합 결과
병합 편집기 열기
3방향 병합 편집기를 열려면
-
소스 제어 보기에서 충돌이 있는 파일 선택
-
컨텍스트 메뉴에서 **병합 편집기에서 열기**를 선택하거나 편집기 상단에 나타나는 **병합 편집기에서 해결** 버튼을 선택합니다.

병합 편집기에서 변경 사항 수락
병합 편집기는 각 충돌하는 변경 사항 옆에 체크박스를 표시하여 충돌을 보여줍니다. 이러한 체크박스를 사용하여 어떤 변경 사항을 수락할지 선택합니다.
-
들어오는 및 현재 패널의 변경 사항 검토
-
편집기 CodeLens 액션을 사용하여 수락할 변경 사항 선택
- 들어오는 또는 현재 변경 내용 수락
- 두 변경 내용 조합 수락하여 두 변경 내용을 스마트하게 병합
- 무시: 결과에 포함하지 않을 변경 사항
-
아래의 결과 패널은 선택 사항을 표시하도록 자동으로 업데이트됩니다.
-
결과 편집기 오른쪽에 있는 충돌 수 카운터 표시기를 사용하여 해결되지 않은 남은 충돌 수를 추적합니다.
-
모든 충돌이 해결되면 **병합 완료**를 선택하여 변경 사항을 스테이징하고 병합 편집기를 닫습니다.
병합 편집기에서 수동 편집
때로는 두 변경 사항의 일부를 결합하거나 완전히 새로운 해결 방법을 만들어야 할 수 있습니다. 결과 패널을 직접 편집할 수 있습니다.
-
결과 패널에서 아무 곳이나 선택하여 커서 배치
-
필요에 따라 내용을 편집하여 두 변경 사항의 요소를 결합하거나 새 코드를 작성합니다.
들어오는 또는 현재 패널의 **무시** 버튼을 사용하여 수락하지 않으려는 변경 사항을 숨깁니다. 이렇게 하면 관련 충돌에 집중하는 데 도움이 됩니다.
대체 레이아웃
병합 편집기의 오른쪽 상단에 있는 점 세 개(···)를 선택하면 추가 옵션이 있는 컨텍스트 메뉴가 열립니다. 세로 레이아웃으로 전환하고 베이스 보기를 표시할 수 있습니다. 이 보기는 변경 사항이 적용되기 전 파일의 상태를 보여줍니다.
들어오는, 현재, 결과 옆에 있는 점 세 개는 각 보기에 대한 옵션을 제공합니다. 예를 들어 베이스와의 옆 비교, 모든 변경 내용 수락 또는 결과 재설정 등이 있습니다.
AI를 사용하여 충돌 해결하기 (실험적)
AI 기반 충돌 해결은 실험적인 기능이며 GitHub Copilot 구독이 필요합니다.
VS Code는 AI를 사용하여 병합 충돌을 자동으로 해결하도록 도울 수 있습니다. 이 기능은 충돌하는 변경 사항의 두 버전을 분석하고 해결 방법을 제안합니다.
-
편집기에서 충돌이 있는 파일 열기
-
편집기 상단의 **AI로 병합 충돌 해결** 버튼 선택

-
VS Code는 채팅 보기를 열고 에이전트 흐름을 시작하여 충돌을 분석합니다.
-
편집기에서 제안된 변경 사항 검토
-
해결 방법을 수락하거나 필요한 경우 수동 조정을 합니다.
AI는 병합 베이스(두 브랜치의 공통 조상)와 각 브랜치의 변경 사항을 고려하여 두 변경 사항의 의도를 보존하려고 시도하는 해결 방법을 생성합니다.
병합 작업 완료하기
모든 충돌을 해결한 후 변경 내용을 커밋하여 병합 작업을 완료해야 합니다.
-
모든 충돌 파일이 해결되었는지, 그리고 **스테이징된 변경 사항** 섹션에 있는지 확인합니다.
-
커밋 메시지를 입력하고 **커밋**을 선택하여 병합을 완료합니다.
병합 작업을 취소해야 하는 경우 명령 팔레트에서 **Git: 병합 중단**을 선택합니다. 이렇게 하면 리포지토리가 병합 시작 전 상태로 돌아갑니다.
VS Code를 기본 병합 도구로 구성하기
터미널에서 다음 명령을 실행하여 VS Code를 기본 Git 병합 도구로 설정할 수 있습니다. 명령줄에서 병합을 수행할 때 충돌이 발생하면 Git은 VS Code의 병합 편집기를 열어 해결하도록 도와줍니다.
git config --global merge.tool vscode
git config --global mergetool.vscode.cmd 'code --wait $MERGED'
Git의 기본 diff 도구로 VS Code를 사용하려면 실행하세요.
git config --global diff.tool vscode
git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'
다음 단계
- 브랜치 및 워크트리 - 브랜치 관리 및 충돌 최소화 전략 알아보기
- 스테이징 및 커밋 - 변경 사항 스테이징 및 커밋 생성 알아보기
- 리포지토리 및 원격 - 원격 리포지토리 작업 알아보기
- 소스 제어 개요 - VS Code의 다른 Git 기능 탐색
- VS Code의 Copilot - AI 기반 개발 기능 더 알아보기