다음을 통해 공유


끌어오기 요청 완료, 중단 또는 되돌리기

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

모든 필수 검토자가 PR(끌어오기 요청)을 승인하고 PR이 모든 분기 정책 요구 사항을 충족하면 변경 내용을 대상 분기에 병합하고 PR을 완료할 수 있습니다. 또는 PR의 변경 내용을 진행하지 않기로 결정한 경우 PR을 포기할 수 있습니다.

검토자의 변경 내용을 해결하고 검토 의견에 응답하고 해결하려면 주소 설명을 참조 하세요.

필수 조건

  • 프로젝트에서 리포지토리 를 사용하도록 설정해야 합니다. 리포지토리 허브 및 연결된 페이지가 표시되지 않는 경우 Azure DevOps 서비스를 다시 사용하도록 설정 또는 해제를 참조하세요.

  • PR을 완료하려면 PR이 있는 프로젝트에서 기여자 보안 그룹의 구성원이거나 해당 권한이 있어야 합니다.

  • PR에 기여하려면 읽기 권한자 보안 그룹의 구성원이거나 해당 권한이 있어야 합니다.

  • PR을 보거나 검토하려면 Azure DevOps 프로젝트에 대한 기본 이상의 액세스 권한이 있어야 합니다.

  • 참여 하려는 프로젝트의 멤버가 아닌 경우 추가됩니다.

    참고 항목

    퍼블릭 프로젝트의 경우 이해 관계자 액세스 권한이 부여된 사용자는 Azure Repos에 대한 모든 권한을 갖습니다.

  • 프로젝트에서 리포지토리 를 사용하도록 설정해야 합니다. 리포지토리 허브 및 연결된 페이지가 표시되지 않는 경우 Azure DevOps 서비스를 다시 사용하도록 설정 또는 해제를 참조하세요.
  • PR을 완료하려면 변경하려는 프로젝트에서 기여자 보안 그룹의 구성원이거나 해당 권한이 있어야 합니다.
  • PR에 기여하려면 읽기 권한자 보안 그룹의 구성원이거나 해당 권한이 있어야 합니다.
  • PR을 보거나 검토하려면 기본 액세스 이상의 Azure DevOps 프로젝트의 멤버여야 합니다. 프로젝트 멤버 가 아닌 경우 추가됩니다.
  • Azure DevOps Services에서 확장을 사용하여 Azure CLI(명령줄 인터페이스)에서 PR 및 기타 리소스를 azure-devops 관리할 수 있습니다. Azure DevOps Services CLI를 사용하는 방법을 알아보려면 Azure DevOps CLI 시작을 참조하세요. PR용 Azure Repos CLI 명령은 az repos pr을 사용합니다.

병합 변경 내용 확인

PR을 완료하면 Git은 주 분기의 끝에 새 병합 커밋 을 추가합니다. 이 병합 커밋은 주 분기 및 PR 원본 분기의 이전 기록을 연결합니다. 미리 보기 병합 커밋을 보고 병합 충돌 확인하려면 PR 개요 페이지의 오른쪽 위에 있는 기타 옵션 메뉴를 선택한 다음 병합 변경 내용 보기를 선택합니다.

PR을 만든 후 대상 분기를 변경한 경우 병합 다시 시작을 선택하여 새 미리 보기 병합 커밋을 만들고 병합 변경 차이 보기를 업데이트합니다.

P R의 추가 옵션 메뉴에서 병합 보기 및 병합 다시 시작 옵션을 보여 주는 스크린샷

분기 정책 검토

Teams는 보호된 분기 PR이 병합되기 전에 특정 조건을 충족해야 하는 분기 정책을 설정할 수 있습니다. PR에 적용되는 분기 정책, 병합에 필요한지 여부 및 PR이 통과 또는 실패하는지 여부를 확인할 수 있습니다.

PR 개요 탭에는 PR에 대해 전달되거나 실패하는 분기 정책이 요약되어 있습니다. 개요는 실패한 정책만 나열하지만 보기 n> 검사를 선택하여 <모든 정책 검사를 볼 수 있습니다.

PR 개요 페이지에서 분기 정책 요구 사항에 아이콘이 있습니다 . 요구 사항 옆에 있는 추가 옵션을 선택한 다음 정책 보기를 선택하여 프로젝트 설정에서 분기의 분기 정책 페이지로 이동합니다.

P R의 분기 정책 요구 사항 옆에 있는 정책 보기를 보여 주는 스크린샷

끌어오기 요청 완료

병합 충돌 해결하고 PR이 모든 분기 정책을 충족하고 필요한 모든 승인을 받은 후에 PR을 완료할 수 있습니다.

  1. 오른쪽 위에서 완료를 선택하여 PR을 완료합니다. 또는 완료 단추 옆에 있는 드롭다운 화살표를 선택하고 옵션 중 하나를 선택합니다.

    P R에 대한 완료 단추 옵션을 보여 주는 스크린샷

    • 완료: 이제 PR을 완료하고 변경 내용을 대상 분기에 병합합니다.
    • 자동 완성 설정: 필요한 모든 분기 정책을 충족하면 PR을 완료하고 병합하도록 구성합니다.
    • 초안으로 표시: PR을 초안 상태로 반환하고 모든 투표를 제거합니다.
    • 중단: 변경 내용을 병합하지 않고 PR을 닫습니다.
  2. 끌어오기 요청 완료 창의 병합 유형에서 병합 옵션 중 하나를 선택합니다.

    전체 P R 대화 상자를 보여 주는 스크린샷.

    • 병합(빠른 전달 없음) : 모든 커밋을 유지하는 비선형 기록과 병합합니다.
    • Squash 커밋: 모든 소스 커밋을 대상의 단일 커밋으로 결합하는 선형 기록과 병합하거나 , 스쿼시가 PR을 병합합니다 . 원본 분기에서 커밋 기록을 유지하지 않고 대상 분기에 대해 새 커밋이 만들어집니다.
    • 다시 기반 및 빠른 전달: 원본 커밋을 대상에 다시 지정하고 빠르게 전달합니다.
    • 반선형 병합: 원본 커밋을 대상에 다시 저장하고 두 부모 병합을 만듭니다.

    참고 항목

    기존 정책이 적용됩니다. 예를 들어 분기에 현재 "스쿼시 병합만" 정책이 있는 경우 다른 병합 형식을 사용하려면 해당 정책을 변경해야 합니다.

  3. 다음 완료 후 옵션을 선택합니다. 일부 병합 형식에는 일부 옵션을 사용할 수 없습니다.

    • 병합 후 연결된 작업 항목 완료: 연결된 작업 항목을 완료합니다.
    • 병합 후 분기 이름> 삭제<: 병합 후 PR의 원본 분기를 삭제합니다.
    • 병합 커밋 메시지 사용자 지정: 사용자 지정 병합 커밋 메시지 추가합니다. 이 옵션을 선택하면 병합 커밋 메시지를 업데이트합니다.
    • 분기 정책을 재정의하고 병합을 사용하도록 설정합니다. PR이 모든 분기 정책을 충족하지 않는 경우에도 병합을 강제로 적용합니다. 이 옵션은 정책 적용 권한에서 제외된 경우에만 사용할 수 있습니다.
  4. 병합 완료를 선택합니다.

  1. 오른쪽 위에서 완료를 선택하여 PR을 완료합니다. 또는 완료 단추 옆에 있는 드롭다운 화살표를 선택하고 다음 옵션 중 하나를 선택합니다.

    PR에 대한 완료 단추 옵션을 보여 주는 스크린샷

    • 완료: 이제 PR을 완료하고 변경 내용을 대상 분기에 병합합니다.
    • 자동 완성 설정: 분기 정책이 있는 경우 필요한 모든 분기 정책을 충족하면 PR을 완료하고 병합하도록 구성합니다.
    • 중단: 변경 내용을 병합하지 않고 PR을 닫습니다.
  2. 끌어오기 요청 완료 화면에서 병합 커밋에 대한 메시지를 입력하고 PR 설명을 업데이트합니다.

    끌어오기 요청 완료 대화 상자

  3. 다음 옵션 중에서 선택합니다.

    • 병합 한 후 연결된 작업 항목을 완료하여 연결된 작업 항목을 완료합니다.

    • 병합한 후 삭제 <branch name> 하여 PR에서 원본 분기를 삭제합니다.

    • 스쿼시 병합 시 스쿼시가 PR을 병합때 변경합니다. 원본 분기에서 커밋 기록을 유지하지 않고 대상 분기에 대해 새 커밋이 만들어집니다.

    • 분기 정책을 재정의하고 병합 을 사용하도록 설정하여 분기 정책이 모두 충족되지 않더라도 분기가 병합되도록 합니다. 이 옵션은 정책 적용 권한에서 제외된 경우에만 사용할 수 있습니다.

      참고 항목

      기존 정책은 여전히 적용됩니다. 예를 들어 분기에 현재 "squash merge only" 정책이 있는 경우 다른 병합 형식을 사용하려면 해당 정책을 편집해야 합니다.

  4. 병합 완료를 선택합니다.

병합 을 완료하면 연결된 모든 작업 항목 이 PR 완료를 표시하도록 자동으로 업데이트됩니다.

완료된 P R을 보여 주는 연결된 작업 항목의 스크린샷

PR 완료 중 다시베이스

PR 완료 중에는 재지정이 불가능한 몇 가지 상황이 있습니다.

  • 대상 분기의 정책에서 재베이스 전략을 사용하지 못하도록 하는 경우 다시 기반으로 하려면 분기 정책 재정의 권한이 필요합니다.
  • PR 원본 분기에 정책이 있는 경우 다시 지정할 수 없습니다. 재지정은 정책 승인 프로세스를 거치지 않고 원본 분기를 수정합니다.
  • 병합 충돌 확장을 사용하여 병합 충돌 해결한 경우 다시 기반이 될 수 없습니다. 모든 PR 커밋을 개별적으로 다시 적용할 때 3방향 병합에 적용되는 충돌 해결은 거의 성공하지 않거나 유효하지 않습니다.

이러한 모든 경우에 로컬로 분기를 다시 지정한 다음 업스트림을 푸시하거나 PR을 완료할 때 변경 내용을 스쿼시 병합할 수 있습니다.

여러 병합 기반 문제

경우에 따라 PR에 두 개 이상의 실제 병합 기반이 있으며 이 경우 보안 문제가 발생할 수 있습니다. PR에 있는 파일의 병합 기반 간에 버전이 다른 경우 다중 병합 기반 경고가 발생합니다. 자세한 내용 및 수정은 여러 병합 기반을 참조 하세요.

병합 충돌 해결

분기의 파일 변경 내용이 다른 분기의 변경 내용과 충돌할 수 있습니다. 변경 내용을 병합하는 방법이 명확하지 않으면 Git은 PR의 개요 페이지에 충돌하는 파일을 표시합니다. PR을 병합하거나 PR을 자동 완성하도록 설정하려면 PR 분기와 대상 분기 간의 병합 충돌 해결해야 합니다. 병합 충돌 해결에 대한 지침은 병합 충돌 해결을 참조하세요.

P R의 개요 탭에 있는 병합 충돌 보여 주는 스크린샷

자동 완성을 위한 끌어오기 요청 설정

전체 드롭다운 목록에서 자동 완성 설정을 선택하여 조건이 모든 분기 정책을 충족하는 즉시 PR 변경 내용을 완료하고 병합합니다. PR이 완료되면 이메일 알림을 받게 됩니다. 충돌 또는 오류로 인해 PR이 완료되지 않으면 전자 메일에서 문제를 알 수 있습니다.

참고 항목

자동 완성 설정 옵션은 분기 정책이 있는 경우 Azure Repos 및 TFS 2017 이상에서 사용할 수 있습니다. 자동 완성 설정이 표시되지 않으면 분기 정책이 없습니다. 자세한 내용은 분기 정책을 참조 하세요.

기본적으로 자동 완성으로 설정된 PR은 필요한 정책에서만 대기합니다. 자동 완성 사용 패널에서 선택적 정책도 기다리도록 선택할 수 있습니다.

자동 완성 사용 패널에서 필요에 따라 선택적 정책을 변경하는 것을 보여 주는 스크린샷.

TFS 2018 업데이트 2부터 PR 개요 페이지에 PR이 기다리고 있는 미해결 정책 기준 목록이 표시됩니다. 자동 완성 사용 패널에서 필요한 정책을 설정하는 경우 개요 페이지에서 선택 사항으로 다시 설정할 수 있습니다.

자동 완성 취소를 선택하여 자동 완성을 해제합니다.

자동 완성 상태의 PR 스크린샷

자동 완성 상태의 PR 스크린샷

자동 완성을 위한 PR 집합은 끌어오기 요청 페이지에 자동 완성 배지를 표시합니다.

PR 목록의 자동 완성 PR을 보여 주는 스크린샷

끌어오기 요청 중단 또는 다시 활성화

병합하지 않고 변경 내용 및 PR을 중단하려면 완료 단추의 드롭다운 목록에서 중단선택합니다. 중단된 PR은 계속 볼 수 있으며 작업 항목에 연결된 상태로 유지됩니다.

중단된 PR을 언제든지 다시 활성화하려면 끌어오기 요청 보기의 중단된 탭에서 PR을 열고 오른쪽 위에서 다시 활성화를 선택합니다.

완료된 끌어오기 요청 되돌리기

PR에서 변경 내용을 실행 취소하려면 다음 단계를 수행합니다. 자세한 내용은 변경 내용 실행 취소를 참조 하세요.

  1. 완료된 PR을 열고 되돌리기를 선택합니다. 이 작업은 리포지토리의 기존 대상 분기에서 PR을 실행 취소하는 변경 내용이 있는 새 분기를 만듭니다.

  2. 끌어오기 요청 되돌리기 창에서 다음을 수행합니다.

    1. 대상 분기에서 PR 변경 내용을 실행 취소할 분기를 선택합니다.
    2. 필요한 토픽 분기 이름 아래에서 원하는 경우 되돌리기 PR 분기 이름을 변경합니다.
    3. 되돌리기 선택
  3. 새 끌어오기 요청 화면에서 만들기를 선택합니다.

  4. 새 PR을 병합하여 되돌리기를 완료합니다.

참고 항목

이 되돌리기 중에 만든 분기에는 원래 PR에서 모든 파일 변경 내용을 되돌리는 단일 커밋이 있습니다. 분기는 원래 PR의 각 커밋에 대해 되돌려진 커밋을 포함하지 않습니다.

다음 단계