다음을 통해 공유


충돌 해결

작업 영역과 원격 Git 리포지토리 둘 다에서 동일한 항목을 변경할 때 충돌이 발생합니다. 충돌이 발생하면 Git 상태는 충돌커밋을 사용할 수 없음을 나타냅니다.

Git 상태가 충돌임을 나타내는 보고서의 스크린샷.

충돌이 발생한 상태에서 업데이트를 선택하면 업데이트하기 전에 충돌을 해결해야 한다는 메시지가 표시됩니다.

충돌을 알리는 소스 제어 탭의 오류 메시지 스크린샷

충돌을 해결하는 다음 세 가지 방법이 있습니다.

UI에서 충돌 해결

모두 업데이트를 선택하여 충돌이 있는 모든 항목의 목록을 확인합니다. 그런 다음 각 항목에 대해 유지할 버전을 선택할 수 있습니다. 충돌하는 각 항목에 대해 Git 리포지토리에서 들어오는 변경 내용을 적용하거나 작업 영역에 있는 현재 버전을 유지하도록 선택할 수 있습니다.

유지할 충돌 항목의 버전을 선택하는 UI의 스크린샷.

  • 들어오는 변경 내용 승인을 선택하여 작업 영역의 변경 내용을 재정의합니다. 가져오기에 성공하면 작업 영역 변경 내용이 손실되고 Git 상태가 동기화됩니다.

  • 현재 콘텐츠 유지를 선택하면 작업 영역에서 현재 버전을 유지합니다. 업데이트가 완료되면 작업 영역의 변경 내용이 아직 분기에 커밋되지 않아 Git 상태가 커밋되지 않은 변경이 됩니다.

이전 상태로 되돌리기

전체 작업 영역 또는 Git 분기를 마지막으로 동기화된 상태로 되돌릴 수 있습니다. Git 분기를 이전 커밋으로 되돌리는 경우에도 동기화되지 않은 분기에 대한 변경 내용을 볼 수 있습니다. 작업 영역을 되돌리면 마지막 커밋 이후 작업 영역에 대한 모든 변경 내용이 손실됩니다.

이전 동기화 상태로 되돌리려면 다음 작업 중 하나를 수행합니다.

  • 실행 취소 명령을 사용하여 작업 영역의 충돌된 항목을 마지막 동기화 상태로 반환합니다.
  • Azure DevOps에서 git revert 명령을 사용하여 Git에서 마지막으로 동기화된 상태로 되돌립니다.

작업 영역의 연결을 끊고 다시 연결하여 충돌을 해결할 수도 있습니다. 다시 연결할 때 동기화할 방향을 선택합니다. 그러나 다시 연결하게 되면 충돌하는 항목뿐만 아니라 작업 영역 또는 분기의 모든 항목을 덮어씁니다. 작업 영역 또는 분기를 마지막으로 동기화된 상태로 반환하지 않습니다. 대신 한 위치의 모든 콘텐츠를 다른 위치의 콘텐츠로 덮어씁니다.

Git에서 충돌 해결

변경된 내용과 선택할 버전이 확실하지 않고 이전 상태로 되돌리지 않으려는 경우에는 새 분기를 만들고 해당 분기에서 충돌을 해결하고 현재 분기와 동기화하여 Git 리포지토리에서 충돌을 해결할 수 있습니다.

참고 항목

작업 영역 관리자만 작업 영역을 새 분기에 다시 연결할 수 있습니다.

  1. 원본 제어 패널에서 화면 아래쪽에 표시된 마지막 동기화된 분기 ID를 사용하여 새 분기를 확인합니다.

    아래쪽 화살표를 선택하여 소스 제어 패널에서 새 분기를 체크 아웃하는 방법을 보여 주는 스크린샷

    화면 아래쪽에 표시된 분기 ID 정보의 스크린샷.

    이 단계에서는 변경 내용과 충돌하는 변경 내용을 적용하기 전에 마지막으로 동기화된 Git 상태를 사용하여 충돌하는 분기에서 새 분기를 만듭니다. 소스 제어 패널에서 변경 내용을 볼 수 있지만 Git 분기에서 업데이트된 내용이 없습니다. 체크 아웃 분기는 현재 작업 영역 상태를 유지하므로 분기를 변경할 때 커밋되지 않은 변경 내용이 유지됩니다.

  2. 변경 내용을 새 분기로 커밋합니다. 이제 이 새 분기에는 변경 내용과 충돌하지 않는 이전 버전의 Git 분기에 연결된 항목에 대한 변경 내용이 있습니다.

  3. git에서 원래 분기와 새 분기 간의 충돌을 해결합니다.

  4. git에서 새 분기를 원래 분기에 병합합니다.

  5. Fabric에서 작업 영역을 원래 분기로 다시 전환 합니다.