Visual Studio에서 병합 충돌 해결

적용 대상:yesVisual Studio noMac용 Visual Studio noVisual Studio Code

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

병합 충돌의 이해

다음 이미지는 Git에서 변경 내용이 충돌하는 기본적인 예제를 보여 줍니다. 이 예제에서는 기본 분기와 bugfix 분기가 소스 코드의 동일한 줄을 업데이트합니다.

병합 충돌을 보여 주는 다이어그램

bugfix 분기를 기본 분기로 병합하려고 시도하면, Git이 병합된 버전에서 어느 변경 내용을 사용해야 하는지 판단할 수 없습니다. 기본 분기의 변경 내용, bugfix 분기의 변경 내용 또는 둘의 조합을 보관해 두는 것이 좋습니다. 이 충돌은 기본 분기에서 병합 커밋을 사용하여 해결합니다. 병합 커밋은 두 분기 사이의 충돌하는 변경 내용을 조정합니다.

병합 커밋으로 병합 충돌을 해결하는 방법을 보여 주는 다이어그램

가장 일반적인 병합 충돌 시나리오는 원격 분기에서 로컬 분기(예: 원래/bugfix 분기에서 로컬 bugfix 분기로)로 업데이트를 풀하는 경우에 발생합니다. 이러한 충돌을 같은 방식으로 해결할 수 있습니다. 즉, 로컬 분기에서 커밋을 만들어서 변경 내용을 조정한 다음, 병합을 완료합니다.

병합 충돌 방지

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

병합 충돌 해결

  • 동일한 분기의 다른 사용자와 공동 작업하는 경우 변경 내용을 푸시할 때 병합 충돌이 표시될 수 있습니다.

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

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

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

    참고

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

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

    병합 충돌 알림의 스크린샷

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

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

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

    1. 충돌을 한 줄씩 확인하면서 확인란을 선택하여 오른쪽과 왼쪽 중에 유지할 항목을 선택합니다.
    2. 충돌하는 변경 내용을 모두 유지하거나 무시합니다.
    3. 결과 창에서 수동으로 코드를 편집합니다.

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

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

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

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

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

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

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

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

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

    참고

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

    현재 상태로 유지 메뉴 옵션의 스크린샷.

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

다음 단계

과정을 계속하고 충돌 해결에 대해 자세히 알아보려면 병합 명령에 대한 Git 웹 페이지를 참조하세요.

참조