Visual Studio에서 병합 충돌 해결

한 분기를 다른 분기에 병합하면 하나의 분기에 있는 커밋의 파일 변경 내용이 다른 분기에 있는 변경 내용과 충돌할 수 있습니다. Git은 리포지토리의 기록을 사용하여 병합된 파일이 실제로 어떠해야 하는지 확인함으로써 이러한 변경 내용의 해결을 시도합니다. 변경 내용을 병합해야 하는 병합을 명확하게 알 수 없는 경우 Git은 병합을 중단하고 어느 파일이 충돌하는지 알려 줍니다.

병합 충돌 방지

Git은 커밋 간에 파일 내용이 크게 변경되지 않은 경우 대부분의 상황에서 파일 변경 내용을 자동으로 알아서 병합합니다. 작업 중인 분기가 기본 분기보다 훨씬 이전이라면 끌어오기 요청을 열기 전에 분기를 다시 지정하는 것이 좋습니다. 다시 지정된 분기는 충돌 없이 기본 분기에 병합됩니다.

병합 충돌 해결

  • 동일한 분기에서 다른 사용자와 함께 작업하는 경우 변경 내용을 푸시할 때 병합 충돌이 발생할 수도 있습니다.

    푸시 후의 병합 충돌 스크린샷

  • Visual Studio가 작업 중인 로컬 분기가 원격 추적 분기 뒤에 있는지 확인한 다음, 옵션을 제공합니다.

    로컬 분기가 원격 분기 뒤에 있을 때 사용할 수 있는 옵션의 스크린샷

    참고

    원격 리포지토리에서 강제 푸시를 지원하는 경우 Git>설정을 사용하여 사용하도록 설정할 수 있습니다.

    이 예제에서 원격 리포지토리에 적용된 변경 내용을 포함하도록 풀한 다음, 푸시를 선택합니다. 변경 내용을 풀할 때나 두 분기의 병합을 시도할 때 병합 충돌이 발생하는 경우 Visual Studio가 Git 변경 내용 창, Git 리포지토리 창 및 충돌이 있는 파일에서 이 사실을 알려 줍니다.

    병합 충돌 알림의 스크린샷

  • Git 변경 내용 창의 병합되지 않은 변경 내용 아래에 충돌이 있는 파일 목록이 표시됩니다. 충돌 해결을 시작하려면 파일을 두 번 클릭합니다. 또는 편집기에서 충돌이 있는 파일이 열려 있는 경우 병합 편집기 열기를 선택할 수 있습니다.

    Git 변경 내용 창의 병합 충돌 상태 스크린샷

  • 병합 편집기에서 다음 방법 중 하나를 사용하여(번호가 매겨진 스크린샷에 표시된 대로) 충돌 해결을 시작합니다.

    1. 충돌을 한 줄씩 확인하면서 확인란을 선택하여 오른쪽과 왼쪽 중에 유지할 항목을 선택합니다.

      - 또는 -

    2. 수신 적용 단추를 선택하여 (혹은 F10 키를 눌러) 들어오는 모든 변경 내용을 승인하거나 현재 내용을 적용 버튼을 눌러 (혹은 F11 키를 눌러) 충돌하는 모든 변경 내용의 현재 버전을 유지합니다. 양쪽 프레임의 맨 위에 있는 검사 상자 중 하나를 선택하여 동일한 작업을 수행할 수 있습니다.

      - 또는 -

    3. 결과 창에서 수동으로 코드를 편집합니다.

    Visual Studio 2022에서 병합 충돌을 해결하는 방법을 보여 주는 스크린샷

    병합 편집기에서 기본 레이아웃이 마음에 들지 않으면 기어 드롭다운 메뉴를 사용하여 변경할 수 있습니다.

    병합 편집기 레이아웃 옵션 스크린샷

    예를 들어 다음 스크린샷은 세로 보기의 모습을 보여 줍니다.

    병합 편집기 사용자 인터페이스의 세로 보기 스크린샷

  • 병합 충돌을 해결하고 나면 병합 수락을 선택합니다. 충돌하는 모든 파일에 대해 이 프로세스를 반복합니다.

    Visual Studio 2022의 병합 수락 작업의 스크린샷

  • Git 변경 내용 창에서 병합 커밋을 만들고 충돌을 해결합니다.

    Git 변경 내용 창에서 병합 커밋을 만드는 방법 스크린샷

    참고 항목

    파일의 모든 변경 내용을 유지하려면 병합 편집기를 열지 않고 병합되지 않은 변경 내용 섹션 아래에서 파일을 마우스 오른쪽 단추로 클릭하고 현재 파일 유지(로컬)를 선택하면 됩니다.

    현재 파일 유지 메뉴 옵션의 스크린샷.

사용 가능한 접근성 옵션에 대한 자세한 내용은 Visual Studio의 접근성 팁과 요령 페이지의 Git 바로 가기 키 섹션을 참조하세요.