포크

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

Visual Studio 2019 | Visual Studio 2022

Git 리포지토리 포크는 사용자가 코드베이스를 실험적, 위험하거나 기밀로 변경하려는 경우에 유용하지만 이러한 변경 내용은 원래 리포지토리의 코드베이스에서 격리되어야 합니다. 새 포크는 기본적으로 새 원격 리포지토리에 푸시된 원래 리포지토리의 복제본입니다. 포크는 원래 리포지토리와 독립적이며 단일 분기를 지정하지 않는 한 전체 복사본입니다.

독립 복사본으로 커밋 또는 분기 추가와 같은 포크에 대한 변경 내용은 원래 리포지토리와 공유되지 않습니다. 코드베이스 변경 내용을 원래 리포지토리에 병합하려면 PR(끌어오기 요청)을 만들어 해당 변경 내용에 대한 검토 및 승인을 요청해야 합니다.

포크 프로세스는 원래 리포지토리에서 포크로 권한, 정책 또는 빌드 파이프라인을 전송하지 않습니다.

이 문서에서는 Azure Repos Git 리포지토리의 포크 작업에 대해 설명하고 GitHub 리포지토리에서 포크를 관리하는 방법을 설명하는 GitHub 콘텐츠에 대한 링크를 제공합니다.

이 문서에서는 다음 방법을 알아봅니다.

  • 포크 간 코드 공유
  • 분기와 포크 중에서 선택
  • 리포지토리 포크 사용
  • 포크 만들기
  • 로컬로 포크 복제
  • 포크에 로컬 변경 내용 푸시
  • PR 만들기 및 완료
  • 포크 동기화

Azure Repos에 액세스하기 위한 필수 구성 요소

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

  • 프라이빗 프로젝트에서 코드를 보려면 기본 액세스 수준 이상이 있는 Azure DevOps 프로젝트의 멤버여야 합니다. 공용 프로젝트의 경우 모든 사용자가 코드를 볼 수 있습니다.

  • 프라이빗 프로젝트에 대한 코드를 복제하거나 참가하려면 기여자 보안 그룹의 구성원이거나 해당 사용 권한이 설정되어 있어야 합니다. 퍼블릭 프로젝트의 경우 누구나 코드를 복제하고 기여할 수 있습니다. 자세한 내용은 공개 프로젝트가란?을 참조 하세요.

    참고 항목

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

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

  • 코드를 보려면 기본 액세스 이상의 Azure DevOps 프로젝트의 멤버여야 합니다. 프로젝트 멤버 가 아닌 경우 추가됩니다.

  • 코드를 복제하거나 참가하려면 변경하려는 프로젝트에서 기여자 보안 그룹의 구성원이거나 해당 권한이 있어야 합니다.

포크 간 코드 공유

원래 리포지토리를 업스트림 리포지토리라고도 합니다. 분기에서 업스트림 또는 업스트림 포크로 변경 내용을 병합하는 PR을 만들 수 있습니다. 가장 일반적인 방향은 포크에서 업스트림. 대상 리포지토리의 권한, 정책, 빌드 및 작업 항목이 PR에 적용됩니다.

분기와 포크 중에서 선택

2~5개 개발자로 구성된 소규모 팀의 경우 모든 사용자가 기능 분기 작업할 수 있고 분기 정책이 기본 분기 보호할 수 있으므로 포크 워크플로가 필요하지 않을 수 있습니다. 그러나 팀이 이 배열을 확장하고 증가하면 포크 워크플로로 전환할 수 있습니다.

리포지토리에 오픈 소스 프로젝트와 같이 일반적이거나 드문 커밋자가 많은 경우 포크 워크플로를 사용하는 것이 좋습니다. 일반적으로 프로젝트에 대한 핵심 기여자 원래 리포지토리에 대한 직접 커밋 권한이 있어야 합니다. 다른 협력자는 핵심 기여자 작업을 검토할 기회가 있을 때까지 포크 워크플로를 사용하여 제안된 변경 내용을 격리해야 합니다.

리포지토리 포크 사용

Azure Repos Git 리포지토리에 포크를 사용하도록 설정하려면 포크 사용을 참조 하세요.

GitHub 리포지토리에 포크를 사용하도록 설정하려면 조직의 포크 정책 관리를 참조하세요.

포크 워크플로

포크 워크플로는 다음 섹션에 설명된 5단계로 구성됩니다.

  1. 포크 만들기
  2. 로컬로 포크 복제
  3. 포크에 로컬 변경 내용 푸시
  4. PR 만들기 및 완료
  5. 포크 동기화

포크 만들기

다음 단계에서는 Azure Repos Git 리포지토리를 포크하는 방법을 설명합니다.

참고 항목

Azure DevOps 프로젝트에서 리포지토리를 포크하려면 해당 프로젝트에 대한 리포지토리 만들기 권한이 있어야 합니다. 리포지토리 소유자는 포크 전용 프로젝트를 만들고 모든 기여자 리포지토리 만들기 권한을 할당하는 것을 고려해야 합니다. 사용 권한 설정에 대한 자세한 내용은 Git 리포지토리 권한 설정을 참조하세요.

  1. 웹 브라우저에서 포크하려는 Azure Repos Git 리포지토리로 이동합니다. 리포지토리 파일을 선택한 다음 줄임표 메뉴에서 포크를 선택하여 포크 대화 상자를 엽니다.>

    Azure Repos의 리포지토리 파일 페이지에 있는 추가 작업 메뉴의 포크 메뉴 항목 스크린샷

  2. 포크 대화 상자에서 포크된 리포지토리의 이름을 지정하고 포크를 만들 프로젝트를 선택하고 포크에 포함할 분기를 선택한 다음 포크를 선택합니다. 포크에 모든 분기를 포함할지 아니면 기본 분기 포함할지 지정할 수 있습니다. 리포지토리에 여러 토픽 분기가 포함된 경우 포크에 기본 분기 포함하는 것이 좋습니다.

    Azure Repos의 리포지토리 파일 페이지에 있는 포크 대화 상자의 스크린샷

GitHub 리포지토리를 포크하는 방법에 대한 자세한 내용은 리포지토리 포크를 참조하세요.

로컬로 포크 복제

리포지토리 를 포크한 후 포크를 복제 하여 컴퓨터의 폴더에 로컬 복사본을 만듭니다. 명령줄에서 또는 Visual Studio와 같은 IDE를 사용하여 복제할 수 있습니다. 리포지토리 복제에 대한 자세한 내용은 기존 Git 리포지토리 복제를 참조하세요.

원격 리포지토리를 복제할 때 Git은 복제한 원격 리포지토리의 URL에 대한 약식으로 별칭 origin 을 할당합니다. 편의를 위해 분기한 리포지토리에 대해 명명 upstream 된 다른 별칭을 추가합니다. 이 별칭을 업스트림 리포지토리라고 합니다. 다음 단계에서는 별칭을 추가하는 upstream 방법을 설명합니다.

편의를 위해 Git 명령에서 origin 해당 URL 대신 별칭과 upstream 별칭을 사용할 수 있습니다.

Visual Studio에서 별칭을 추가 upstream 하려면 다음 단계를 수행합니다.

  1. 메뉴 모음에서 도구 > 옵션을 선택하여 옵션 창을 엽니다. 원본 제어 > Git 리포지토리 설정 > 원격을 선택한 다음 추가를 선택하여 원격 추가 대화 상자를 엽니다.

    Visual Studio 2019에서 소스 제어 메뉴의 Git 리포지토리 설정 하위 메뉴의 원격 창에 있는 추가 단추 스크린샷

  2. 원격 추가 대화 상자에서 호출 upstream 된 새 원격을 추가하고 포크한 리포지토리의 Git 복제 URL을 입력합니다. 그런 다음 저장을 선택합니다.

    Visual Studio 2019의 원격 추가 대화 상자 스크린샷

포크에 로컬 변경 내용 푸시

포크할 때 원격 리포지토리의 개인 및 독립 복사본을 만듭니다. 따라서 로컬 클론의 분기에서 main 직접 작업한 다음 해당 작업을 main 포크의 분기에 푸시하는 것을 막을 수 있는 것은 없습니다. 그러나 일반적으로 작업에 기능 분기 사용하는 것이 좋습니다. 기능 분기 사용:

  • 여러 독립 작업 스트림을 동시에 기본 수 있습니다.

  • 해당 작업은 분기별로 고유한 작업 스트림으로 구성되므로 다른 사용자가 공유하는 작업을 더 쉽게 이해할 수 있습니다.

일반적인 Git 워크플로 에는 다음 단계가 포함됩니다.

  1. 로컬 기능 또는 버그 수정 분기를 만듭니 다.

  2. 새 분기를 변경하고 작업을 커밋 합니다. 일반적으로 사용자는 기능 또는 버그 수정 작업을 할 때 여러 커밋을 합니다.

  3. 기능 또는 버그 수정 분기를 포크로 푸시 합니다. 포크에 별칭이 있습니다 origin.

변경 내용을 푸시하는 방법에 대한 자세한 내용은 푸시를 사용하여 코드 공유를 참조하세요.

PR 만들기 및 완료

Azure Repos에서 포크에 푸시한 변경 내용을 원래 리포지토리에 병합하려면 다음을 수행할 수 있습니다.

  1. 변경 내용의 검토 및 승인을 요청하는 PR을 만듭니다. PR을 열 때 PR 원본 분기를 포크의 기능 또는 버그픽스 분기로 설정합니다. PR 대상 분기는 일반적으로 포크한 main 리포지토리의 분기입니다. 해당 리포지토리를 업스트림 리포지토리라고 하며 별칭이 있습니다upstream.

    다음 스크린샷은 Azure Repos에서 만든 PR의 원본 리포지토리 및 분기와 대상 리포지토리 및 분기를 보여줍니다.

    Azure Repos의 PR 원본 및 대상 분기 옵션 스크린샷

    브라우저, Visual Studio 또는 Azure DevOps CLI를 사용하여 PR을 만드는 방법에 대한 자세한 내용은 PR 만들기를 참조하세요.

    Important

    업스트림 리포지토리에 대한 읽기 권한이 있는 사용자는 누구나 PR을 열 수 있습니다. 업스트림 리포지토리에 PR 생성 시 실행되도록 구성된 PR 빌드 파이프라인이 있는 경우 PR에서 도입된 변경 내용에 따라 빌드가 실행됩니다.

  2. PR이 완료되려면 모든 필수 검토자가 PR 변경 내용을 승인해야 하며 모든 대상 분기 정책을 충족해야 합니다. PR 승인 및 완료 시 PR 원본 분기의 변경 내용이 PR 대상 분기에 병합됩니다.

GitHub PR을 만들고 완료하는 방법에 대한 자세한 내용은 끌어오기 요청 만들기 및 끌어오기 요청 병합을 참조하세요.

포크 동기화

PR이 포크의 변경 내용을 업스트림 리포지토리의 대상 분기로 병합한 후 업스트림 리포지토리의 대상 분기에서 끌어와 변경 내용과 다른 기여자 변경 내용으로 해당 로컬 분기를 업데이트할 수 있습니다. 그러면 다음을 수행할 준비가 완료되었습니다.

  • 업데이트된 로컬 분기에서 새 기능 또는 버그 수정 분기를 만듭니다.

  • 업데이트된 로컬 분기에서 .로 푸시하여 포크를 업데이트합니다origin.

일반적으로 업스트림 리포지토리의 대상 분기는 main. 로컬 main 분기를 직접 편집하지 않는 경우(기능 분기 작업) 업스트림 분기에서 끌어와서 병합 충돌 없이 로컬 main 분기 upstream/main 를 업데이트합니다.

다음 단계