다음을 통해 공유


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

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Visual Studio 2019 | Visual Studio 2022

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

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

필수 조건

카테고리 요구 사항
프로젝트 액세스 프로젝트멤버입니다.
권한 - 프라이빗 프로젝트에서 코드 보기: 최소 기본 액세스.
- 프라이빗 프로젝트의 코드 복제 또는 기여: 기여자 보안 그룹 또는 프로젝트의 해당 사용 권한의 구성원입니다.
- 분기 또는 리포지토리 사용 권한 설정: 분기 또는 리포지토리에 대한 사용 권한 사용 권한 관리
- 기본 분기 변경: 리포지토리에 대한 정책 편집 권한 설정.
- 리포지토리 가져오기: 프로젝트 관리자 보안 그룹의 구성원이거나, Git 프로젝트 수준에서 리포지토리 만들기 권한이 허용으로 설정된 경우. 자세한 내용은 Git 리포지토리 권한 설정을 참조 하세요.
서비스 리포지토리가 활성화되었습니다.
도구 선택 사항입니다. az repos 명령어를 사용하세요: Azure DevOps CLI.

참고

퍼블릭 프로젝트에서 이해 관계자 액세스 권한이 있는 사용자는 코드 보기, 복제 및 기여를 포함하여 Azure Repos에 대한 모든 권한을 갖습니다.

카테고리 요구 사항
프로젝트 액세스 프로젝트멤버입니다.
권한 - 코드 보기: 최소 베이직 접근 권한.
- 코드 복제 또는 기여: 기여자 보안 그룹의 구성원이거나 프로젝트에서 해당 권한을 가진 경우.
서비스 리포지토리가 활성화되었습니다.

권한 및 액세스에 대한 자세한 내용은 기본 Git 리포지토리 및 분기 권한액세스 수준 정보를 참조하세요.

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을 병합때 변경합니다. 원본 분기에서 커밋 기록을 유지하지 않고 대상 분기에 대해 새 커밋이 만들어집니다.

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

      참고

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

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

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

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

PR 완료 중 리베이스

PR 완료 시 리베이스가 불가능한 몇 가지 상황이 있습니다.

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

이러한 모든 경우에 로컬에서 브랜치를 리베이스하고 나서 업스트림에 푸시하거나 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의 각 커밋에 대해 되돌린 커밋을 포함하지 않습니다.

다음 단계